Javascript 我不是从0开始的
此代码会警告“测试1”,然后警告8Javascript 我不是从0开始的,javascript,ajax,firefox,Javascript,Ajax,Firefox,此代码会警告“测试1”,然后警告8 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
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);
为什么以及如何解决?我以前在IE中遇到过类似的问题。您应该始终在for循环中使用var,以确保i是本地作用域:
alert('test 1');
for (var i = 0; i < gclasses.length; i++) {
alert(i);
// etc...
}
除非事先在同一范围内声明变量:
var i;
alert('test 1');
for (i = 0; i < gclasses.length; i++) {
alert(i);
// etc...
}
另见:
我以前在IE中遇到过类似的问题。您应该始终在for循环中使用var,以确保i是本地作用域:
alert('test 1');
for (var i = 0; i < gclasses.length; i++) {
alert(i);
// etc...
}
除非事先在同一范围内声明变量:
var i;
alert('test 1');
for (i = 0; i < gclasses.length; i++) {
alert(i);
// etc...
}
另见:
您是否有其他未粘贴的警报?如果您将其更改为:
alert('test 1, gclasses.length = '+gclasses.length);
for (var i = 0; i < gclasses.length; i++) {
alert(i);
我想知道这个循环是否正在执行?有没有其他未粘贴的警报?如果您将其更改为:
alert('test 1, gclasses.length = '+gclasses.length);
for (var i = 0; i < gclasses.length; i++) {
alert(i);
我想知道这个循环是否正在执行?在本例中,在使用它的每个函数中本地声明变量i。如果即使使用for循环也为变量赋值,则该变量将成为全局变量,并且可能会因同时运行的其他函数而发生更改。在本例中,在使用它的每个函数中本地声明变量i。如果即使使用for循环也为变量赋值,则该变量将变为全局变量,并且可能会因同时运行的其他函数而发生更改。请先运行JSLint:Problem(第23行字符2:缺少分号)。请先运行JSLint:Problem(第23行字符2:缺少分号)。