[英]Can't assign querySelectorAll() to a variable - weird behaviour
我正在尝试抓取一个非常老的网站以获取特定标签,我需要通过它的for =属性来获取它。 所以我用了这段代码。
var character = document.querySelectorAll("label[for=char_1]");
由于某种原因,它返回了一个undefined
,但是我使用这个脚本已有几天了,它就像一个魅力一样工作。 这是有趣的部分。 在浏览器控制台中键入该命令将导致undefined
。 但是单独输入:
document.querySelectorAll("label[for=char_1]");
将返回一个正确的NodeList
。 为什么不分配给变量...?
编辑:似乎删除var
并输入没有它的character
将使其工作。 解决了,但是我仍然很想得到“为什么会这样”的答案?
编辑2:
for (var i = 0; i < 15; i++) {
var character = document.querySelectorAll("label[for=char_" + i +"]");
console.log(character); // this will return [] from the script.
var color = character[0].children[0].style.color;
}
一个简单的for循环。 我得到的只是Cannot read property 'children' of undefined
。 但是我可以输入相同的命令document.querySelectorAll...
,它将在浏览器中工作并返回NodeList
。
我在一个很烂的脚本中像这样工作。 有效。
var character1 = document.querySelectorAll("label[for=char_1]");
var characterColor1 = character1[0].children[0].style.color;
编辑3:
var character1 = document.querySelectorAll("label[for=char_1]");
var characterColor1 = character1[0].children[0].style.color;
var character2 = document.querySelectorAll("label[for=char_2]");
var characterColor2 = character2[0].children[0].style.color;
// ...
上面的代码可以正常工作。 我不认为DOM还没有准备就绪,因为该代码也是从Greasemonkey脚本运行的,并且可以正常工作。 唯一的区别是for循环。
var x = ""; // returns undefined, because it's a var assignment.
var elements = document.querySelectorAll('div');
粘贴到控制台中时,这是预期的行为。
编辑:似乎删除var并输入没有它的字符将使其工作。 解决了
恐怕您现在正在创建全局范围变量。 也许字符是该范围内已经定义的变量。
如我在编辑3中所说,Buhah“唯一的区别是for循环”。 我非常忙于尝试在与DOM相关的事情中找到答案,以至于我犯了有史以来最简单的编程错误。
看到?
char_1
用...
for(var i = 0...)
0! 我在浏览器中测试的是char_1而不是char_0。 哪一个确实返回[]
而不是有用的东西。 我想是时候放假了,我的大脑似乎已经存在了。 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.