-
ID:G8uteX さんの質問

JavaScriptについて質問です
下記のソースの.barに.bazというクラスを追加したいのですがうまくいきません
textnodeを削除するところまでは思ったとおり動作してるのですが
.bazというクラスを追加するところがうまくいかず
これってどこが悪いのでしょうか?
<ul class="foo">
<li class="bar">bar</li>
<li class="bar">bar</li>
<li class="bar">bar</li>
<li class="bar">bar</li>
</ul>

window.onload = function(){
var Parent = document.querySelectorAll(’.foo’);
var Child = [];
(function(){
var i,
j,
k;
for(i=0,j=0; i<Parent.length; i++,j++){
Child[i] = Parent[j].childNodes;
for(k=0; k<Child[i].length; k++){
if(Child[i][k].nodeType == 3){
Parent[j].removeChild(Child[i][k]);
}
else {
Child[i][k].className += ’baz’;
}
}
}
})();
}

みんなの回答 5 件

ID:zvmPN9 さんの回答

bazのクラス名追加の際にスペースが必要では?それだとbar bazじゃなくてbarbazになっている感じがします。

ID:wc2SHM さんの回答

if(Child[i][k].nodeType == 3){
} else {
//クラス追加
}
なので現在のHTMLのときはテキストノードなので、クラス追加されてない気がします・・・

ID:101lfL さんの回答

jQueryじゃだめですか?3行ぐらいで出来ますよ

ID:cnLwc/ さんの回答

IE10以降でいいなら、element.classList.add(’baz’)でいいのでは

ID:G8uteX さんの回答

すみません自己解決しました
removeChildで削除した分ループカウンタの巻き戻しをしてないのが原因だったみたいです
お騒がせしてすみません

最終更新日:2015-06-25 (1,828 views)

関連するトピックス

ページ上部に戻る