1

カスタム getElementById() メソッドを試して、HTML ページから DOM 要素を取得しました。これが定義です。

document.customGetElById = function(passedId){
    var nodeFound = null;
    recursive = function(nodes)
    {
        for(var i =0 ; i< nodes.length; i++)
        {
            if(nodes[i].nodeType == 1) //element nodes
            {
                //console.log(nodes[i].id);   //only element nodes have id's
                if(nodes[i].id == passedId)
                {
                    //console.log(nodes[i]);
                    nodeFound = nodes[i];
                    return;
                }
                if(nodes[i].childNodes)
                {
                    //console.log('there are child nodes inside it');
                    recursive(nodes[i].childNodes);
                }
            }
        }
    }
    recursive(document.body.childNodes);
    return nodeFound;
};

これは正しい方法ですか?これはパフォーマンスに適していますか?ネイティブの getElementById() メソッドをオーバーライドする必要はありません。ネイティブ関数はどのように記述されていますか? 誰か助けてくれませんか?前もって感謝します。

4

1 に答える 1

2

ネイティブ関数は JS で記述されていないため、JS のアプローチは元の とは必然的に異なりますgetElementById

あなたの関数は、おそらくブラウザーの実装よりも効率が悪いでしょう。なぜなら、あなたがしているのは、他の多くのネイティブ関数からそれを再現しているだけだからです。

于 2012-11-29T07:17:32.917 に答える