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