Javascript Settimeout Help

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cemnet
    cemnet's avatar
    Kayıt Tarihi: 18/Eylül/2007
    Erkek

    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);

     

                }

            };

     

     

     

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    eomerx
    eomerx's avatar
    Kayıt Tarihi: 19/Haziran/2015
    Erkek

    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
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cemnet
    cemnet's avatar
    Kayıt Tarihi: 18/Eylül/2007
    Erkek

    evet hocam bir üst fonksiyona alınca çalıştı sağol 

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YeniHarman
    YeniHarman's avatar
    Kayıt Tarihi: 17/Haziran/2012
    Erkek

    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);
       }
    };

     


    Olaylara karışmayın!
Toplam Hit: 622 Toplam Mesaj: 4
javascript