繁体   English   中英

无法将querySelectorAll()分配给变量-奇怪的行为

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM