質問

私はIEモバイルで作業する必要がモバイルウェブアプリに取り組んでいます。私はIE Mobileは「className」プロパティ(IE4エンジン...)をサポートしていないに取得していますJavaScriptエラーを絞り込むました。私は、最小限のコードの変更(私はすでに「className」を使用し、いくつかのライブラリを持っている)と、すべてのブラウザーで動作する代替を見つけようとしている。

私は考えることができ最も簡単な方法は、(それはそれを持っていない場合)、クラス名を含めるようにIEの要素のプロトタイプを変更するだろう、問題は、私は「className」への代替がIEモバイルにあるかわからないということですます。

私はこれを試してみた:

element.className = element.class;

classにはJavaScriptのキーワードであり、私のJSのコンプレッサーがそれを好きではない、それはとにかく、おそらく有効ではないですので、明らかに動作しません。

どこでも私は、要素のクラスを変更する必要がある「のsetAttribute()を」を使用して以外に、私はクラス名と同じです使用することができます任意のプロパティがありますか?

役に立ちましたか?

解決

あなたはsetAttribute()の使用を避けることはできませんが、あなたはjQueryの脚本の外にラインを取り、オプションのパラメータでヘルパープロシージャを使用することができます。このコードは未テストですが、働くべきます:

var className = function (obj, value)
{
    if (value !== undefined)
    {
        return obj.setAttribute ('class', value);
    }
    return obj.getAttribute ('class');
};

// Use as
alert (className (element));
className (element, "foo");
alert (className (element));

他のヒント

ノー属性、なし。私はあなたがのgetAttribute()メソッドとsetAttribute()。

で立ち往生している怖いです

ジョン・ミリキンが、あなたもIEの要素試作品の機能部を作ることができるものにフォローアップ:

Element.prototype.getClass = function() {
    return obj.getAttribute ('class');
}
Element.prototype.setClass = function(newClass) {
    return obj.setAttribute('class', newClass);
}

またはあなたはジョンのようなコンボ方式が提供したい場合は...

Element.prototype.className = function(newClass) {
    if (!newClass)
        return this.getClass();
    return this.setClass(newClass);
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top