1
<div id="tab1" class="nav left">
<ul>
<li><a href="/magento/" class="now">Home</a></li>
......
</ul>
</div>

ここで、を削除するclass="now"か、クラス値を空に設定します。URLがmangentoにない場合は、次のコードを使用します。でも、最後の部分の書き方がわかりません。

window.onload = function removeNow() {
    var div = document.getElementById("tab1").getElementsByTagName("a");
    if (window.location.pathname != '/magento/') {
        div.removeClass();
    }
}

ありがとうございました。

4

3 に答える 3

4

最新のブラウザでは、classListAPIを使用できます。

div.classList.remove( 'now' );

ただし、コードに固有の問題:クラスを削除するにはループする必要があります。だからこれを試してみてください:

for ( var i = 0; i < div.length; i++ ) {

    div[i].classList.remove( 'now' );

}

お使いのブラウザがサポートしていない場合は、次のシムclassListを使用してください。removeClass

function removeClass( elem, name ) {

    var classlist = elem.className.split( /\s/ ), 
        newlist = [], 
        idx = 0;

    for ( ; idx < classlist.length; idx++ ) {
        if ( classlist[ idx ] !== name ) {
            newlist.push( classlist[ idx ] );
        }
    }

    elem.className = newlist.join(" ");

    return true;
}

またはjQueryclassListを使用する(またはを使用する必要はありませんclassName):

$('a').each(function() {

    if (window.location.pathname != '/magento/')
        $(this).removeClass();

});
于 2012-11-22T02:57:19.217 に答える
1

プロパティを設定しclassNameます。

div.className = '';
于 2012-11-22T02:53:09.790 に答える
0

(おそらく空の) NodeListgetElementsByTagNameを返すことに注意してください。

var div = document.getElementById("tab1").getElementsByTagName("a");

は、ID「tab1」を持つ要素のすべての A 要素の子孫のコレクションです (したがって、「div」はおそらく適切な名前ではありません)。

最初のそのような A 要素のすべてのクラス値を削除するだけの場合は、次のようになります。

div[0].className = '';

仕事をします。ただし、NodeList は空である可能性があるため、次のほうがより堅牢になります。

if (div[0]) {
    div[0].className = '';
}

多分

div[0] && div[0].className = '';

コーディング スタイルと保守性の要件によって異なります。

于 2012-11-22T04:21:18.083 に答える