簡體   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