Javascript Settimeout Help
-
git() fonksiyonunu çalıştırdığımda sırayla gönderdiğim elemanların alert ile dönmesini istiyorum. Ancak settimeout dışardan gelen " i " değerini almıyor. Bunu nasıl yapabilirim?
Yada direk yapmak istediğimi söyleyeylim. For döngüsü ile kayıt döndürmek istiyorum araya 1 saniye eklemek istiyorum.
function git() {
addCartItem("21,32,43");
}
function addCartItem(opts) {
var parca = opts.split(',');
for (var i = 0; i < parca.length; i++) {
setTimeout(function() {
alert(parca[i]);
}, 3000 * i);
}
};
-
setTimeout çalıştığında i değeri çoktan değişmiş oluyor.
o yüzden bu fonksiyon undefined döner.
setTimeout'u farklı bir fonksiyon içinde çalıştırmalısın.
function alertFunc(i, val) {
setTimeout(function() {
alert(val[i]);
}, 3000 * (i+1));
}
function git() {
addCartItem("21,32,43");
}
function addCartItem(opts) {
var parca = opts.split(',');
for (var i = 0; i < parca.length; i++) {
alertFunc(i, parca)
}
};
git();
eomerx tarafından 22/Haz/15 11:02 tarihinde düzenlenmiştir -
evet hocam bir üst fonksiyona alınca çalıştı sağol
-
setTimeOut'un 3. ve sonraki parametreleri, ilk parametredeki fonksiyona gönderilen parametreler. Karışık oldu. Neyse:
git(); function git() { addCartItem("21,32,43"); } function addCartItem(opts) { var parca = opts.split(','); for (var i = 0; i < parca.length; i++) { setTimeout(function(arr, k) { alert(arr[k]); }, 1000 * i, parca, i); } };
