2016-03-23 6 views
-2

私は同じクラス名を持つ特定の要素にIDを追加しようとしていますが、これは例ですが、ここではうまくいきません。私はコンソールで見たとき純粋なjavasctiptを使用して要素にIDを追加できないのはなぜですか? setattributeは関数ではありません

<div class = "ABC"> 
    <p> child </p> 
    </div> 

<div class = "ABC"> 
<p> child </p> 
</div> 

<div class = "ABC"> 
<p> child </p> 
</div> 


<div class = "ABC"> 
<p> child </p> 
</div> 


var ref = document.getElementsByClassName("ABC")[3]; 
var ref2child = ref.childNodes 
var addID = ref2child.setAttribute("id", "HOV") 

それがキャッチされない例外TypeErrorは言う:ref2child.setAttribute関数(...)

+1

スタート:

はこれを試してみてください。要素ではありません。次に、 'childNodes'のドキュメンテーションを探してください。 –

+0

私はそれが要素ではありませんが、変数は、私は私が欲しい要素を返すコンソールにref2childを入力するときにターゲットにしたい子供の要素を参照しています – Jake

+0

実際のコードにもラインターミネータ(; – Spidey

答えて

0

ref.childNodesはあなたが伝える必要がありますので、あなたのノードのリストを与えるされていない追加することにより、このようなインデックスはref.childNodes[0]です。

ref.childNodesもテキストノードを返すと、より良い方法はありそうref.children

注意次のようになります。あなたがあなたの上にそれを実行します。setAttributeメソッドは戻り値に

注2を持っていませんコードでは、スクリプトが本体の最後かonload/domreadyイベントのいずれかで実行されていることを確認してください。そうしないと、要素がまだ利用できないため、エラーが発生します。

var ref = document.getElementsByClassName("ABC")[3]; 
 
var ref2child = ref.children[0]; 
 
ref2child.setAttribute("id", "HOV"); 
 

 
/* this line is only for demo purpose, showing this method works */ 
 
ref2child.innerHTML += ref2child.getAttribute("id");
<div class = "ABC"> 
 
    <p> child </p> 
 
    </div> 
 

 
<div class = "ABC"> 
 
<p> child </p> 
 
</div> 
 

 
<div class = "ABC"> 
 
<p> child </p> 
 
</div> 
 

 

 
<div class = "ABC"> 
 
<p> child </p> 
 
</div>

+0

私はあなたが言ったことを試してみましたが、以下のUncaught TypeErrorと書かれています:未定義のプロパティ 'children'を読み取ることができません – Jake

+0

@Jakeそして、btw、 'setAttribute'メソッドには戻り値がありません – LGSon

+0

@Jakeそしてコードで実行するときは、スクリプトが本体の最後かonload/domreadyイベントのどちらかで実行されていることを確認してください。要素がまだ利用できないので、エラーが発生する – LGSon

0

はいsetAttributeメソッドは、子ノードのコレクションのための機能ではありません。 ref2child` `の値を見ることで

var refs = document.getElementsByClassName("ABC"); 
var ref2child = refs[0]; 
ref2child.setAttribute("id", "HOV") 

// Now this should give you a reference to the item 
var itemWithId = document.getElementById('Hov') 
+0

これはidを子要素ではなく親要素であり、要求された要素です。 – LGSon

+0

私は彼が何を探しているのだろうと思っています。そうでなければ.firstChildを追加して問題を解決します。 –

+0

明らかにそうではありません...そして質問のコードは同じです、子供はターゲットです – LGSon