-1

刚刚发现了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");

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

我尝试了另一种方式,使用数组..源代码是这样的:

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

4

1 回答 1

-1

for(var i = 0; i<(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++)

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

于 2013-07-21T16:01:55.460 回答