Mam stronę która się ładuje dynamicznie. I próbuję z niej pobrać wartości. Ale one na samym początku mają wartość undefinded. Więc znalazłem skrypt i zastosowałem który czeka na dany element i wtedy wykonuje funkcje. Ale jak chcę zrobić to samo- tylko że z zmienną to to nie działa.
Skrypt który działa
var waitForEl = function(selector, callback) {
//funkcja czekająca na dany element bo strona jest zbudowana w jquery więc elementy ładują się dynamicznie
if (document.querySelector(selector)!=null) {//jeśli selektor nie jest pusty
callback();//uruchom funkcję z drugiego parametru
} else {//ale jeśli seketor jeszcze nie istnieje
setTimeout(function() {//uruchom funkcje opóżniającą czas
waitForEl(selector, callback);//jako pierwszy parametr-fukncja z przekazywanywanymi danymi-czyli uruchom to
}, 100);//co 100ms(czyli 1/10s). 1s=1000ms
}
};
var nazwa;//deklaruje zmienną którą używam w poniższej fukcji. Ta zmienna staje się zmienną globalną a w funkcji jest tylko nadpisywana przez co można jej używać w dalszej częśli kodu
waitForEl("body>div", function() {
//co robi ta fukkcja
nazwa=document.querySelector("body>div").textContent.substr(3);//przypisuje do "nazwa".wyciąga z niej tekst. ucina 3 znaki z przodu
});
a tu ten który próbuję zrobić i mi nie chce działać.
var zmienna;//ma wartosc undefinded i jest globalna
function zmien_zmienna() {
setTimeout(function() {//funkcja która zmienia nazwę zmiennej
console.log("zmien_zmienna uruchominona");//powiadominie że zmienia zmieną
zmienna="przykładowy";
}, 5000);//tutaj wpisałem 5s dla przykładu ale tutaj jest randomowa liczba
}
zmien_zmienna();//uruchamiam funkcję że ona już działa
console.log(zmienna);//wyświetla zmienną-jak na razie undefinded bo zmieni się za 5s
var no_undefined=function (nazwa) {
if (typeof nazwa !== undefined) {//tutaj nie jestem pewny jak poprawnie napisać ten warunek. bo jak skasuje typeof to nie spełnia warunku. Tak samo jak wezmę undefinded w cudzysłów.
console.log("spełnia warunek");
return nazwa;
}
else {
setTimeout(function() {
console.log("wejście w funkcje kolejny raz "+nazwa+" "+zmienna);
no_undefined(nazwa);//jeśli warunek nie spełniony uruchom jeszcze raz funkcję no_undefinded przekazując argument nazwa który cały czas ma wartość undefinded
}, 1000);
}
}
console.log(no_undefined(zmienna));//uruchamiam funkcję no_undefinde