1

Google でこれが見つからないなんて信じられません - divclassname で追加のクラス名を a に追加する必要がありますcheckField:

<div id="wth" class="checkField"><label>Ok whatever</label></div>

document.getElementById("wth").className="error"; // This works
document.getElementsByClassName("field").className="error"; // Doesn't work

私はこれを試しました:

document.getElementsByClassName("field").getElementsByTagName("label").className="error";

^ また、動作しません。

誰かアドバイスをください。私はJQueryに慣れすぎています。

4

4 に答える 4

1

このgetElementsByClassNameメソッドは、単一の要素ではなく、配列のようなオブジェクトであるnodeListを返します。あなたが望むことをするためにあなたはリストを繰り返す必要があります:

var divs = document.getElementsByClassName("checkField");
if (divs) {
  // Run in reverse because we're
  // modifying the result as we go:
  for (var i=divs.length; i-- >= 0;) {
    divs[i].className = 'error';
  }
}

また、設定するだけでclassName、クラスに追加するのではなく、実際にクラスを置き換えます。別のクラスを追加する場合は、次のようにする必要があります。

divs[i].className += ' error'; // notice the space bar

あなたがやろうとしている2番目のこと、つまりdivの代わりにラベルのクラスを設定することに関しては、divをループしてgetElementsByTagNameそれらを呼び出す必要があります:

var divs = document.getElementsByClassName("checkField");
if (divs) {
  // Run in reverse because we're
  // modifying the result as we go:
  for (var i=divs.length; i-- >= 0;) {
    var labels = divs[i].getElementsByTagName('label');
    if (labels) {
      for (var j=0; j<labels.length; j++) {
        labels[j].className = 'error';
      }
    }
  }
}
于 2012-10-24T04:33:14.713 に答える
1

クラスを現在の値に追加する必要があります。

document.body.className += " foo"; // adds foo class to body

一部のブラウザーclassListは、要素のクラスを追加、削除、および切り替えるためのメソッドを提供する をサポートしています。たとえば、次のように新しいクラスを追加できます。

document.body.classList.add("newClass");

クラスの切り替えに伴う作業を想像してみてください。クラスがすでに要素上にあるかどうかを最初に判断し、それに応じて応答するために何らかの文字列操作を実行する必要があります。あなたclassListだけのtoggleメソッドを使用することができます:

document.body.classList.toggle("toggleMe");

一部のブラウザは現在 をサポートしていませんclassListが、これを利用できないわけではありません。ポリフィルをダウンロードして、ネイティブでサポートされていないこの機能を追加できます。

于 2012-10-24T04:28:58.270 に答える
0

クラスを追加および削除するための簡単なユーティリティ関数を次に示します。

function addClass(elem, cls) {
    var oldCls = elem.className;
    if (oldCls) {
        oldCls += " ";
    }
    elem.className = oldCls + cls;
}

function removeClass(elem, cls) {
    var str = " " + elem.className + " ";
    elem.className = str.replace(" " + cls + " ", " ").replace(/^\s+|\s+$/g, "");
}
于 2012-10-24T06:37:01.203 に答える
0

のようなものを試してください

あなたはdocument.bodyでこれをしたい

だから試してみてください

var demo =document.body; 

// also do this by class like var demo = document.getElementsByClassName("div1one"); 
// or id var demo = document.getElementsId("div1one"); 

demo .className = demo .className + " otherclass";

オプションとしてjqueryがある場合は、より簡単なソリューション

 $("body").addClass("yourClass");
于 2012-10-24T04:29:06.617 に答える