2017-02-27 5 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();を使用して値を取得できません。

私はタグでリスト要素を取得didntは?コードで何が間違っていますか?

答えて

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文は動作するはずです。 - あなたは、クエリの要素を取得します

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

かかわらず、実際の彼らは、またはすでに文書に添付されていない場合:そうでしょう呼び出す

+0

その投げ** TypeError:document.body.appendは関数ではありません(...)** @NahushFarkande – invisible

+0

** appendChild **は働いています..ありがとうございます! @NahushFarkande – invisible

+1

右!私の間違い。お力になれて、嬉しいです :) –

0

これは、文書に実際にListを追加していないためです。

+0

ありがとうございます! @Tom – invisible

1

クエリーサブジェクトのルートノードが既に手元にある場合は、クエリーセレクタでdocument要素を呼び出さないでください。または、すでに利用可能なローカルラッパー固有のIDがある場合

これはコストがかかります!

これは常に避けるべきです。

他に選択肢がない限り、クエリセレクタのすべてを使用しないでください。

は、常にもっと速い方法です。

関連する問題