gpt4 book ai didi

javascript - GreaseMonkey 中的循环

转载 作者:行者123 更新时间:2023-11-29 18:35:05 25 4
gpt4 key购买 nike

我正在开发我的第一个 greasemonkey 脚本(尝试编辑页面内容并将其添加到特定网站)并且出于某种原因,它拒绝在一个 while 循环之外工作。例如:

var anchorTag = window.document.getElementsByTagName('a');
var anchorTagNumber = window.document.getElementsByTagName('a').length;
..
..
i = 0
j = 0;
function collectId(i,link) {
linkArray[j] = new Array(2);
linkArray[j][0] = i;
linkArray[j][1] = link;
j++;
}


while(i <= anchorTagNumber)
{
testHref = anchorTag[i].href;
testHTML = anchorTag[i].innerHTML;
patHref = /some regex/;
patCaptureId = /some regex/;
testId = patCaptureId.exec(testHref);
patHTML = /some regex/;
patHTML2 = /some regex/;
patHTML3 = /some regex/;
if(patHref.test(testHref) && !patHTML.test(testHTML) && !patHTML2.test(testHTML))
{
linkId = testId[1];
collectId(i,linkId);
}
i++;
}

在此 while 循环结束后的任何事情都将拒绝工作。即使是简单的 alert 似乎也不会执行。我有另一个具有类似结构的 while 循环,如果我把那个放在第一位,它就会执行,而这个不会。有任何想法吗 ?提前致谢!

最佳答案

最明显的问题是数组正在溢出,这将导致脚本出错。

这个:while(i <= anchorTagNumber)
应该是:while(i < anchorTagNumber) .
例如,如果一个数组的长度为 5,则其最后一个元素的索引将为 4。

另外,这个:

var anchorTag = window.document.getElementsByTagName('a');
var anchorTagNumber = window.document.getElementsByTagName('a').length;


可以简化为:

var anchorTag       = window.document.getElementsByTagName('a');
var anchorTagNumber = anchorTag.length;


这会略微加快代码速度,但也会使 future 的代码维护或重用更加容易。

关于javascript - GreaseMonkey 中的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4104133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com