2

onmouseover/onmouseout 中に「ハイライト」したいテーブルがあります。これはIEでは必要ですが、他のブラウザでは必要ないことはすでに知っています。

イベントのトリガーを検出することができ、この TR タグは効果的に機能します。(元のクラス「contentTableRow」が問題を引き起こしているようには見えないことに注意してください。)

class="contentTableRow" onclick="openForm('SomeID');" onmouseover="highlight('someRowID', true);" onmouseout="highlight('someRowID', false);" id="someRowID" 

「ハイライト」機能が起動し、実際に適切なクラスが設定されます。

IE が CSS クラス名の変更を処理しないだけです。

これは、変更を行うために使用している CSS のスニペットです。

.HighlightOn {
    cursor:pointer;
    background-color: #D1DFFF;
}

.HighlightOff {
    background-color: #E1EEFE;
}

デバッグするとクラス名が更新されていることがわかり、Firebugでも確認できます。しかし、IEはTRタグを持つクラスのこの使用法を好まないようです..それは私がテーブルのクラスを構築している方法ですか? 何かアドバイス ?

4

3 に答える 3

4

class代わりに変更しclassNameますか?classJavascriptでは実際のクラス宣言キーワードとして予約されているため、プロパティは次のように呼び出されclassNameます。

function highlight(id, b) {
    document.getElementById(id).className = (b ? "HighlightOn" : "HighlightOff");
}

ちなみに、IDの代わりに「this」を渡して強調表示したい場合があるので、document.getElementById()呼び出しを行う必要はありません。

于 2010-04-13T05:14:07.323 に答える
3

すべてのポインタをありがとう。しかし、これはうまくいったようです。

TR.HighlightOn td {
    cursor:pointer;
    background-color: #D1DFFF;
}

TR.HighlightOff  td {
    cursor:pointer;
    background-color: #E1EEFE;
}

基本的に、この場合、クラスが HTML で使用される場所について明示する必要があります。

テーブル内の Highlighton/off クラスを使用している場所に関連する TR タグと TD タグを参照する必要があることに注意してください。ありがとうジェスグラム。

これが同じ問題を抱えている他の人に役立つことを願っています。

(先導してくれた Jensgram に感謝)

于 2010-04-13T09:04:41.810 に答える
1

IEはJavaScriptの「クラス」を認識しません。IEのプロパティとして「className」を使用する必要があります。

于 2010-04-13T05:17:04.660 に答える