使用超时循环函数并传递变量

斯巴达117

好吧,我觉得这很简单,我正在忽略某些东西。

我要传递给包含300行的函数的数据数组。该函数本身会选择一个要更新的随机框,然后选择一个要传递的随机数组元素(0-299),然后更新该框。

第一个迭代很好。第二个返回“ Uncaught ReferenceError:未定义rand_ad”

function loop(last_ad, last_ad_box, ads_array){

        // start
        while(rand_ad == last_ad){
               var rand_ad = get_rand(299);
        }
        while(rand_ad_box == last_ad_box){
               var rand_ad_box = get_rand(29);
        }

        console.log(ads_array[rand_ad]);
        // update the ad
        // update_ad('.addno-'+rand_ad_box, ads_array[rand_ad]);

        //recall itself to continue looping after 1 second
        t = setTimeout("loop(rand_ad, rand_ad_box, ads_array)",3000);
    }
    function get_rand(max){
        var rand = Math.floor(Math.random()*max) + 1;   
        return rand;
    }

我认为这可能是函数循环周围的引号,它会将内部变量视为字符串而不是实际变量,但是我无法在它抓住错误之前将其呈现出来。

有任何想法吗?

rvighne

你的猜测是正确的。将超时行更改为此:

t = setTimeout(loop, 3000, rand_ad, rand_ad_box, ads_array);

将字符串传递给setTimeout会带来安全风险,因此不建议这样做。此外,它不会执行代码,直到发生超时,因此在函数退出后将取消引用变量。

如果您需要它在IE中运行,则必须使用以下命令:

t = setTimeout(function () {
    loop(rand_ad, rand_ad_box, ads_array);
}, 3000);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Python从函数传递变量

来自分类Dev

传递变量的函数的onclick在foreach循环 - 谷歌Apps脚本

来自分类Dev

如何在forEach循环中传递变量函数

来自分类Dev

向/从函数传递变量

来自分类Dev

使用列表函数无法正确传递变量(?)

来自分类Dev

从使用GraalVM JavaScript的传递变量参数的Java函数

来自分类Dev

使用python在Azure函数HttpResponse中传递变量

来自分类Dev

如何使用新方法在函数内部传递变量

来自分类Dev

使用句柄在MATLAB GUI中的函数之间传递变量

来自分类Dev

使用django模板在javascript函数中传递变量

来自分类Dev

使用void传递变量*

来自分类Dev

使用委托传递变量

来自分类Dev

如何通过函数的函数传递变量

来自分类Dev

从循环外定义但在该循环内调用的函数传递变量

来自分类Dev

在erb循环中传递变量

来自分类Dev

在erb循环中传递变量

来自分类Dev

用Tasks代替循环-传递变量

来自分类Dev

在函数之间传递变量-PHP

来自分类Dev

jQuery .each函数和传递变量

来自分类Dev

在jQuery函数中传递变量

来自分类Dev

通过C ++中的函数传递变量

来自分类Dev

jQuery ajax函数如何传递变量

来自分类Dev

简单函数无法正确传递变量

来自分类Dev

反应函数之间的传递变量

来自分类Dev

jQuery在函数之间传递变量

来自分类Dev

通过JQuery Click函数传递变量

来自分类Dev

在Google Service函数中传递变量

来自分类Dev

Javascript在函数中传递变量

来自分类Dev

如何从map()函数正确传递变量