2017-01-11 7 views
0

DOMを使用してliタグにclass属性を追加する必要があります。そして、私はとても迷っています。 これは私がやったことです、それは正しいですか?Domを使用してliタグにclass属性を追加する方法

var d = document; 
 
var ul = d.getElementsByTagName('ul'); 
 
var li = ul.getElementsByTagName('li'); 
 

 
for (var i = 0; i < li.length; i++) 
 
{ 
 
    var clases = d.createElement('class'); 
 
    clases.class = 'Bebida'; 
 
    li.appendChild(clases); 
 
}
<ul> 
 
    <li>Café</li> 
 
    <li>Mate</li> 
 
    <li>Té</li> 
 
</ul>

感謝。

+0

可能な重複:[特定の要素にクラスを追加するにはどうすればよいですか?](http://stackoverflow.com/questions/507138/how-do-i-add-a-class-to-a -given-element) –

+0

[MDNの[element.className]を参照してください(https://developer.mozilla.org/en-US/docs/Web/API/Element/className) –

+0

」、「class」このコンテキストでは、属性です。属性は要素の「設定」です(id =、class =、style =、height = '' disableded'' contenteditableなど) – zer00ne

答えて

0

あなたのJavascriptからいくつか問題があります。

まずオフ

var ul = d.getElementsByTagName('ul'); 

したがって、これは、あなたが、アレイ上で直接var li = ul.getElementsByTagName('li')を呼び出すことはできませんul要素の配列を返します。

配列内でそれぞれulを繰り返す必要があります。liのような配列項目から取得してください。

var ul = d.getElementsByTagName('ul'); 
for (var u = 0; u < ul.length; u++) { 
    var li = ul[u].getElementsByTagName('li') 
} 

は今だけul変数としてliはまた、あなたが、アレイ内の各li項目を反復処理する必要がありますので、配列です。

var ul = d.getElementsByTagName('ul'); 
for (var u = 0; u < ul.length; u++) { 
    var li = ul[u].getElementsByTagName('li') 
    for (var i = 0; i < li.length; i++) { 

    } 
} 

次の問題は、class要素を作成しないことです。 classli要素の属性です。これは、各要素のclassNameプロパティを介してアクセスできます。

この作業を行うには、すべてをまとめて入れることができます。

var ul = d.getElementsByTagName('ul'); 
for (var u = 0; u < ul.length; u++) { 
    var li = ul[u].getElementsByTagName('li') 
    for (var i = 0; i < li.length; i++) { 
    li[i].className = 'Bebida'; 
    } 
} 

ここにはJSFiddleがあります。

ポイントをもう1つ追加する必要があります。 ul要素をキャプチャする最初のループは無関係です。これを直接スキップして、すべてのli要素を取得することができます。これにより、必要なループの量が減ります。

は、すべてのulの要素をキャプチャして、あなたは、単にドキュメントからすべてのliの要素を取得することができますulそのため、すべてのliをキャプチャしていることを考えます。これは、liの子がulで、他の要素(例えばol)でない場合にのみ当てはまります。

これを〜に減らすことができます。

var liArray = d.getElementsByTagName('li'); 
for(var i=0; i<liArray.length;i++) 
    liArray[i].className = 'Bebida'; 
+0

あなたは非常にニコ! – Nina

+0

私は3つの異なるクラスを各リに追加したいのですが? – Nina

+0

クラス名をスペースで区切ったり、 '.classList'プロパティを使うことができます。 https://developer.mozilla.org/en/docs/Web/API/Element/classList – Nico

関連する問題