2010-02-19 52 views
1

此代码提醒'测试1',然后提醒8!我并非从0开始

uri = 'http://www.scriptcopy.com/'; 
compareuris = new Array(); 
compareuris[0] = 'http://www.scriptcopy.com/'; 
compareuris[1] = 'https://www.scriptcopy.com/'; 
compareuris[2] = 'http://www.www.scriptcopy.com/'; 
compareuris[3] = 'https://www.www.scriptcopy.com/'; 
compareuris[4] = 'http://scriptcopy.com/'; 
compareuris[5] = 'https://scriptcopy.com/'; 
compareuris[6] = 'http://www.scriptcopy.com/'; 
compareuris[7] = 'https://www.scriptcopy.com/'; 
searchuri = 'http://www.google.com/search?'; 
searchuri += 'q='+ encodeURIComponent(uri) +'&btnG=Search+Directory&hl=en&cat=gwd%2FTop'; 
req = new XMLHttpRequest(); 
req.open('GET', searchuri, true); 
req.onreadystatechange = function (aEvt) { 
    if (req.readyState == 4) { 
     if(req.status == 200) { 
      searchcontents = req.responseText; 
      parsedHTML = sc_HTMLParser(searchcontents); 
      sitefound = sc_sitefound(compareuris, parsedHTML); 
     } 
    } 
} 
req.send(null); 
function sc_HTMLParser(aHTMLString){ 
    var parseDOM = content.document.createElement('div'); 
    parseDOM.appendChild(Components.classes['@mozilla.org/feed-unescapehtml;1'] 
     .getService(Components.interfaces.nsIScriptableUnescapeHTML) 
     .parseFragment(aHTMLString, false, null, parseDOM)); 
    return parseDOM; 
} 
function sc_sitefound(compareuris, parsedHTML) { 
    gclasses = parsedHTML.getElementsByClassName('g'); 
    alert('test 1'); 
    for (i = 0; i < gclasses.length; i++) { 
     alert(i); 
     gclass = gclasses[i]; 
     atags = gclass.getElementsByTagName('a'); 
     tag1 = atags[0]; 
     hrefattribute1 = tag1.getAttribute('href'); 
     uri1 = hrefattribute1; 
     compareduris = sc_compareuris(uri1, compareuris); 
     alert('test 2'); 
     if (compareduris) { 
      sitefound = uri1; 
      return sitefound; 
      alert('test 3'); 
     } 
     alert('test 4'); 
    } 
    return null; 
} 
function sc_compareuris(uri, compareuris) { 
    for (i = 0; i < compareuris.length; i++) { 
     compareuri = compareuris[i]; 
     if (uri == compareuri) { 
      return true; 
     } 
    } 
    return false; 
} 

聚焦:

alert('test 1'); 
    for (i = 0; i < gclasses.length; i++) { 
     alert(i); 

为什么和如何解决?

+1

首先通过JSLint运行它:“问题在第23行字符2:缺少分号。” – 2010-02-19 00:18:30

回答

1

你有没有其他的提醒,没有粘贴?如果将其更改为:

alert('test 1, gclasses.length = '+gclasses.length); 
for (var i = 0; i < gclasses.length; i++) { 
    alert(i); 

我想知道该循环是否正在执行?

1

在您使用的每个函数中声明本地变量(本例中为i)。如果你给一个变量赋值(即使是for循环),它也会变成一个全局变量,并且可能会同时运行其他函数。