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 件
bazのクラス名追加の際にスペースが必要では?それだとbar bazじゃなくてbarbazになっている感じがします。
if(Child[i][k].nodeType == 3){
} else {
//クラス追加
}
なので現在のHTMLのときはテキストノードなので、クラス追加されてない気がします・・・
jQueryじゃだめですか?3行ぐらいで出来ますよ
IE10以降でいいなら、element.classList.add(’baz’)でいいのでは
すみません自己解決しました
removeChildで削除した分ループカウンタの巻き戻しをしてないのが原因だったみたいです
お騒がせしてすみません
関連するトピックス