2017-02-27 64 views
0
let List = document.createElement("div"); 
     List.setAttribute('id', 'name'); 
     let List1 = document.createElement("ul"); 
     let List2 = document.createElement("li"); 
      let Value = document.createTextNode("america"); 
      List2.appendChild(Value); 
     let List3 = document.createElement("li"); 
       Value = document.createTextNode("london"); 
      List3.appendChild(Value); 
      List1.appendChild(List2); 
      List1.appendChild(List3); 
      List.appendChild(List1); 

When i enter let li = document.querySelectorAll("#name li");當我在javascript中手動創建列表時,無法使用querySelectorAll()獲取值;

我沒有得到一個列表元素與標籤?代碼有什麼問題?

回答

0

您需要將您創建的List節點追加到文檔中。 試試這個:

let List = document.createElement("div"); 
List.setAttribute('id', 'test'); 
let List1 = document.createElement("ul"); 
let List2 = document.createElement("li"); 
let Value = document.createTextNode("java"); 
List2.appendChild(Value); 
let List3 = document.createElement("li"); 
Value = document.createTextNode("ajax"); 
List3.appendChild(Value); 
List1.appendChild(List2); 
List1.appendChild(List3); 
List.appendChild(List1); 

document.body.appendChild(List); 

現在你document.querySelectorAll聲明應該工作。

+0

它的拋出** TypeError:document.body.append不是一個函數(...)** @NahushFarkande – invisible

+0

** appendChild **正在工作..謝謝! @NahushFarkande – invisible

+1

對!我的錯。樂於幫助 :) –

0

我認爲這是因爲您實際上沒有在文檔中添加List

+0

謝謝! @Tom – invisible

1

這一呼籲本來是:

List.querySelectorAll("#name li"); 
//better more 
List.querySelectorAll("li"); 
//because you already have the handle for #name element in your hands. 

不管事實上,如果是這樣,還是沒有附加到文件 - 你會得到查詢的元素。

如果您已經有查詢主題的根節點,請不要在查詢選擇器上調用文檔元素。或者如果有本地包裝唯一ID已經可用。

太貴了!

你應該在任何時候都避免這種情況。

除非沒有其他選擇,否則絕不要使用查詢選擇器。

List.getElementsByTagName("li"); 

總是一個更可取的方式去 - 並飆升更快。

相關問題