3

ブラウザ間で互換性があるように、古い Javascript を更新する必要があります。このコードは元々 IE6 用に作成されたもので、HTML のレイアウト方法のために、nextSibling と previousSibling を多用しています。

明らかに、nextSibling と previousSibling は、Firefox などでは同じようには機能しません。次善の選択肢である nextElementSibling は、古い IE ブラウザでは機能しません。私がする必要があるのは、ほとんどのブラウザーで機能するnextElementSiblingと同等の関数を作成することです。

これは私の試みですが、うまくいかないようです:

function getNextElementSibling(CurrentElement) {
    if (CurrentElement.nextElementSibling) {
        return CurrentElement.nextElementSibling
    } else {
        do {
            CurrentElement = CurrentElement.nextSibling;
        } while (CurrentElement && CurrentElement.nodeType !== 1);
        return CurrentElement;
    }
} 

修理/交換するには何をする必要がありますか?

JQuery やその他のライブラリはオプションではないことに注意してください。

4

1 に答える 1

1

私は同じ問題を抱えており、dojo-framework (v1.7 を使用しています) がこれに便利な方法を提供していないのは奇妙だと思います。

私のブラウザーの互換性の問題は、IE バージョン 7、8、および 9、および Webkit ブラウザー (最近のバージョン) に関連しています。Firefox 14 でもテストしたところ、動作するようです。

function getNextElementSibling(element) {

    if (element.nextElementSibling) {

        return element.nextElementSibling;
    } else {

        return element.nextSibling;
    } 
}
于 2012-07-26T11:19:02.680 に答える