-3

テーブルの行に色を付けるスクリプトを作成しました。私のスクリプトは Internet Explorer 8 以降でしか動作しません。スクリプトをクロスブラウザにするにはどうすればよいですか?

window.onload = (function()
{
    "use strict";
    var c = 0, i, j, t = document.getElementsByTagName("tbody"), r;
    for(i = 0; i < t.length; i++)
    {
        r = t[i].getElementsByTagName("tr");
        for(j = 0; j < r.length; j++)
        {
            if(c%2 === 1)
            {
                r[j].setAttribute("class", "colored");
            }
            c++;
        }
        c = 0;
    }
});
4

1 に答える 1

3

変化する

r[j].setAttribute("class", "colorful");

r[j].className = "colorful";

IE には間違った歴史があり、IE がsetAttribute間違っている方法の 1 つはclass属性に関連しています。(以前のバージョンでは、属性が と呼ばれていても、 を使用している場合でもclassそれを呼び出す必要があります。これは完全に間違っています。他のブラウザーや最近のバージョンの IE では正しく処理されます。)classNamesetAttribute

幸いなことに、属性は (すべてのブラウザで)呼び出された要素のプロパティclassとして確実に反映されるため、上記のように代わりに反映されたプロパティに移動することでIE の問題を回避できます。classNamesetAttribute

(要素のfor属性でも同じことが起こります。参考までに、代わりに Reflected プロパティを使用してください。)labelhtmlFor

于 2013-03-11T13:31:35.350 に答える