此代码,
for (a = 0; a < 5;a++){
var namex = document.getElementsByClassName("tooltip_sticky")[a].getAttribute("name",2);
var n=namex.split("'");
i = 0;
while(i < 30) {
var achou = n[i].indexOf("mission=1");
if (achou == -1) {
alert(achou);
i++;
}
else {
alert("Lol");
i++;
}
}
}
它必须先运行a为0,然后运行while 30次,返回a,将a设置为1,运行while更多30次,回到a,设置为2,运行which 30次。。。
但它做了前30次WHILE,然后停了下来,为什么不回到FOR?
这里的基本问题是只有两个原因导致循环无法继续:
-
您没有显示的内容是更改
a
或的值 -
正在引发错误(这种可能性更大)。
在后一种情况下,可以在浏览器的JavaScript控制台中找到错误。
在任何一种情况下,使用浏览器中内置的调试器单步执行代码都可以帮助您找出错误所在
从评论中,听起来var n=namex.split("'");
不一定会产生一个至少有30个元素的数组。所以你需要改变你的内部循环:
var n=namex.split("'");
i = 0;
while(i < n.length) { // <=== Change is here
否则,n[i]
可能是undefined
,并且尝试对其调用方法将抛出错误。
FWIW,您的while
循环也想成为for
循环:
for (i = 0; i < n.length; ++i) {
var achou = n[i].indexOf("mission=1");
if (achou == -1) {
alert(achou);
}
else {
alert("Lol");
}
}
您的代码中没有显示任何a
或i
的声明。我想你已经在某个地方声明了它们;否则,您将成为隐式全球化的恐怖的牺牲品。
最后:据我所知,getAttribute
只接受一个论点,而不接受两个。