如何使用javascript进行此函数循环?

时间:2014-02-06 07:42:18

标签: javascript function timer

function argsToArray(args) {
  var r = []; for (var i = 0; i < args.length; i++)
    r.push(args[i]);
  return r;
}

argsToArray(document.getElementsByTagName('img')).forEach(function(img) {
  img.src = img.src.split('VTlibOlte8YCb').join('X0X810D0' + Math.floor((Math.random()*10)+1));;
});

我尝试添加setInterval(argsToArray,500);最后,但似乎已经破碎了。

这是相当陈旧的,可能会崩溃浏览器,但对于这个实验,它可能会起作用。

function reloadPage()
  {
  location.reload();
  }

  setInterval(reloadPage,.5);

2 个答案:

答案 0 :(得分:0)

  1. 我假设使用原生forEach你的目标是IE9 +,所以不要手动将集合内容推送到数组中,而只需:

    function argsToArray(args) {
        return Array.prototype.slice.call(args)
    }
    
  2. 其余代码看起来非常合适,可能split()join()参数有问题。请解释一下你想在这里实现的目标。

  3. 添加setInterval(argsToArray,500)只会在没有任何参数的情况下调用您的第一个函数,您应该使用匿名函数或将参数传递给setInterval / setTimeout函数(请参阅MDN)。

答案 1 :(得分:0)

所以你想做这样的事情?

window.onload=function() {
  var imgs = document.images;
  var tId = setInterval(function() {
    for (var i=0;i<imgs.length;i++) {
      var img = imgs[i];
      var val = 'X0X810D0' + (Math.floor(Math.random()*10)+1);  
      img.src = img.src.replace(/VTlibOlte8YCb/g,val);
    }
  },1000);
}
设计的

每秒替换每个图像的src - 但实际上只有一次因为第一次没有更换VTlibOlte8YCb

这是一个每次都替换值的

Live Demo

window.onload=function() {
  var imgs = document.images;
  var oldVal = new RegExp(/VTlibOlte8YCb/g);  
  var val = 'X0X810D0' + (Math.floor(Math.random()*10)+1);  
  var tId = setInterval(function() {
    for (var i=0;i<imgs.length;i++) {
      var img = imgs[i];
      val = 'X0X810D0' + (Math.floor(Math.random()*10)+1);  
      img.src = img.src.replace(oldVal,val);
      oldVal = new RegExp("/"+val+"/g");  
    }
  },200);
}