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);
答案 0 :(得分:0)
我假设使用原生forEach
你的目标是IE9 +,所以不要手动将集合内容推送到数组中,而只需:
function argsToArray(args) {
return Array.prototype.slice.call(args)
}
其余代码看起来非常合适,可能split()
或join()
参数有问题。请解释一下你想在这里实现的目标。
添加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
这是一个每次都替换值的
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);
}