7

次のコードを実行している間、IEはcloneNode()メソッドを参照してエラー(オブジェクトはこのプロパティまたはメソッドをサポートしていません)をスローします。'i'はループカウンターであり、sourceとdestは両方ともHTML選択要素です。

dest.options[dest.options.length] = source.options[i].cloneNode( true );

FFとChromeは期待どおりに動作します。IEにcloneNode()を実行させる方法に関するアイデアはありますか?IE 8デバッガーは、source.options [i]にcloneNode()メソッドがあることを示しています。

ありがとう。

4

4 に答える 4

9

IE には

new Option()

構築します。

document.createElement( 'option' );

また

cloneNode()

失敗します。もちろん、適切な Web ブラウザでは、すべてのオプションが期待どおりに機能します。

于 2010-09-07T01:28:17.313 に答える
5

実際、cloneNode はエラーをスローしていません。コードを小さなチャンクに分割して、エラーの原因を適切に特定します。

var origOpt = source.options[i];
var clonedOpt = origOpt.cloneNode( true );  // no error here
var destOptLength = dest.options.length;
dest.options[destOptLength] = clonedOpt;    // error!
dest.options.add(clonedOpt);                // this errors too!

dest.appendChild(clonedOpt);                // but this works!

または、元の状態に戻して、すべてを 1 行にします。

dest.appendChild(source.options[i].cloneNode( true ));
于 2010-09-10T01:12:33.450 に答える
1

この投稿は役に立ちました: IE の cloneNode は実際には複製しません!

于 2013-05-22T09:57:38.433 に答える
0
<!doctype html>
<html lang="en">
<head>
<meta charset= "utf-8">
<title>Untitled Document</title>
<style>
p, select,option{font-size:20px;max-width:640px}
</style>
<script>

function testSelect(n, where){
    var pa= document.getElementsByName('testselect')[0];
    if(!pa){
        pa= document.createElement('select');
        where.appendChild(pa);
        pa.name= 'testselect';
        pa.size= '1';
    }
    while(pa.options.length<n){
        var i= pa.options.length;
        var oi= document.createElement('option');
        pa.appendChild(oi);
        oi.value= 100*(i+1)+'';
        oi.text= oi.value;
    }
    pa.selectedIndex= 0;
    pa.onchange= function(e){
        e= window.event? event.srcElement: e.target;
        var val= e.options[e.selectedIndex];
        alert(val.text);
    }
    return pa;
}
window.onload= function(){
    var pa= testSelect(10, document.getElementsByTagName('h2')[0]);
    var ox= pa.options[0];
    pa.appendChild(ox.cloneNode(true))
}

</script>
</head>

<body>
<h2>Dynamic Select:</h2>
<p>You need to insert the select into the document, 
and the option into the select,
before IE grants the options any attributes.
This bit creates a select element and 10 options,
and then clones and appends the first option to the end.
<br>It works in most browsers.
</p>
</body>
</html>
于 2010-09-07T02:37:54.837 に答える