从数组重命名文本的Greasemonkey只能运行一次

时间:2013-06-13 11:45:53

标签: arrays function greasemonkey

刚刚发现了油脂,并且玩了一下。 我测试了这一行来改变网站的文本内容

document.body.innerHTML= document.body.innerHTML.replace("someone","funny");

它运作得很好。 我想在该网站上更换更多文本,但不想复制和发布。粘贴一次又一次,所以我写了一个小函数,如:

function a(s,d){document.body.innerHTML= document.body.innerHTML.replace(s,d);}

这样称呼:

a("test","success");

也没有问题。但后来我想多次调用该函数;像:

a("test","success");
a("some","thing");

但是我的脚本只执行了第一个函数..?

我尝试了另一种方法,使用数组.. sourcecode是这样的:

var array = [];
array.push("john")
array.push("jane")
array.push("foo")
array.push("bar")
b(array);

function b(array)
{
for(var i = 0; i<(array.length-1); i=i+2)
{
   document.body.innerHTML= document.body.innerHTML.replace(array[i],array[i+1])
}
}

但是再次..只执行一次..

我做错了吗?

因为使用 document.body.innerHTML = document.body.innerHTML.replace(“foo”,“bar”) document.body.innerHTML = document.body.innerHTML.replace(“some”,“one”)

效果很好:E

1 个答案:

答案 0 :(得分:-1)

  

for(var i = 0; i&lt;(array.length-1); i = i + 2)

可能是你问题的一部分......

数组长度为4 ....你从0开始计数,这意味着你只能在列表中找到3(我认为),然后i = i + 2意味着你只是处理每一个(我想)..

for(var i = 0; i<(array.length-1); i=i++)

for(var i = 0; i<(array.length); i=i++)

等..........执行时是显示第一个数组值还是最后一个?它可能循环太快而无法看到所有这些,因为您要用下一个替换