Javascript 在GreaseMonkey中循环

Javascript 在GreaseMonkey中循环,javascript,regex,greasemonkey,google-chrome-extension,Javascript,Regex,Greasemonkey,Google Chrome Extension,我正在开发我的第一个greasemonkey脚本(尝试编辑页面内容并将其添加到特定网站),出于某种原因,它拒绝在一个循环之外工作。。例如: var anchorTag = window.document.getElementsByTagName('a'); var anchorTagNumber = window.document.getElementsByTagName('a').length; .. .. i = 0 j = 0; function collectId(i,link) {

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

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++;
}
var-anchorTag=window.document.getElementsByTagName('a');
var anchorTagNumber=window.document.getElementsByTagName('a').length;
..
..
i=0
j=0;
函数collectId(i,link){
linkArray[j]=新数组(2);
linkArray[j][0]=i;
linkArray[j][1]=链接;
j++;
}

while(i代替使用while,您可以尝试每100毫秒调用一次setInterval函数

interval = setInterval(function(){
    iDidIt = doSomethin()
    if(iDidIt){
       clear interval;
    }
},100)

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


这是:
while(我有没有试过在你的循环中加入一些警报,看看它在什么时候失败?我会马上猜测执行者。另外,也许可以尝试使用Firefox并使用错误控制台,除非Chrome有相同的东西。为什么你会得到两次锚定标签?只需使用
var anchorTagNumber=anchorTag.length
来提高它的效率。并找出该问题可能会将
console.log(i,anchorTagNumber)
添加到while循环中。您还可以删除
窗口。
var anchorTag = window.document.getElementsByTagName('a');
var anchorTagNumber = window.document.getElementsByTagName('a').length;
var anchorTag       = window.document.getElementsByTagName('a');
var anchorTagNumber = anchorTag.length;