我正在尝试抓取一个非常旧的网站以获取特定标记,我需要通过它来获取= =属性。所以我使用了这段代码。
var character = document.querySelectorAll("label[for=char_1]");
由于某种原因,它返回undefined
,但我现在使用这个脚本已经有几天了,它就像一个魅力。这是有趣的部分。在浏览器控制台中键入该命令将导致undefined
。但是单独打字:
document.querySelectorAll("label[for=char_1]");
将返回正确的NodeList
。为什么它不会分配给变量......?
编辑:似乎删除var
并在没有它的情况下键入character
会使其正常工作。它已经解决但我仍然希望得到答案,为什么会发生这种情况"?
EDIT2:
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
。
我在一个非常hacky的脚本中让它像这样工作。它奏效了。
var character1 = document.querySelectorAll("label[for=char_1]");
var characterColor1 = character1[0].children[0].style.color;
EDIT3:
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循环。
答案 0 :(得分:0)
var x = ""; // returns undefined, because it's a var assignment.
var elements = document.querySelectorAll('div');
粘贴到控制台时的预期行为。
编辑:似乎删除var并输入没有它的字符将使其工作。它已经解决了
我担心你现在正在创建一个全局范围变量。或者字符是该范围内已定义的变量。
答案 1 :(得分:0)
Buhah,正如我在编辑3中所说,“唯一的区别是for循环”。我忙于尝试在与DOM相关的事情中找到答案,这是我在编程中犯过的最简单的错误。
请参阅?
char_1
使用...
for(var i = 0...)
0!我在浏览器中测试char_1而不是char_0。哪 - 真的 - 返回[]
而不是有用的东西。是时候休假了,我猜,我的大脑似乎已经存在了。 :)