1

重複の可能性:
javascript を使用して css プロパティを削除するには?

これを行うと、要素のオーバーフローを js で変更しています。

document.body.style.overflow = 'hidden';

要素は次のようになります。

<body style="overflow: hidden;"></body>

その後、要素を次のように戻します。

<body style=""></body>

オーバーフローを何にも変更したくありません。要素スタイルからオーバーフローを削除して、style.css にフォールバックするだけです。私は試した:

document.body.style.overflow = '';

これは何もしません。これはどのように行うことができますか?

4

3 に答える 3

3

あなたはこれを行うことができます

document.body.setAttribute('style','');
于 2012-11-01T07:04:15.433 に答える
1

style次のように属性をクリアするだけです。

document.body.setAttribute("style", "");

CSS は多くの部分 (スタイル属性、外部スタイルシート、HTML タグ、JavaScript) から派生する可能性があることを覚えておいてください!

于 2012-11-01T07:05:26.693 に答える
1

現在のプロパティを変更しようとしているだけだと仮定すると (単純に設定を解除しても)、問題が発生します。問題は、空の文字列が CSS プロパティの正当な値と見なされず、style属性に追加されないことです。

autoChromium ではこれを回避できますが、キーワードを使用するだけであっても、プロパティの新しい値を明示的に宣言するだけです。それを念頭に置いて、1つのアプローチは以下のとおりです。

var propStates = {
    // define the states, I'm only using two for a 'toggle'
    // approach, adjust to taste.
    'overflow': ['hidden', 'auto'],
    'display': ['block', 'auto']
}

function removeCSSProperty(el, prop) {
    if (!el || !prop) {
        return false;
    }
    else {
        // el can be either a node-reference *or* a string containing
        // the id of the element to adjust
        el = el.nodeType == 1 ? el : document.getElementById(el);
        var current = window.getComputedStyle(el, null)[prop];
        el.style[prop] = propStates[prop][0] == current ? propStates[prop][1] : propStates[prop][0];
    }
}

document.getElementById('adjust').onclick = function() {
    removeCSSProperty('test', 'overflow');
};​

JS フィドルのデモ

このアプローチでは、ブラウザーがwindow.getComputedStyle()関数を理解する必要があります。IE <9 はサポートされていません (実際にはほとんどcurrentStyle同じように見えますが)。

于 2012-11-01T07:18:44.087 に答える