2011-10-21 9 views
-2

IE8/9で動作しませんなぜこの作品:はなぜ、連鎖

el = document.getElementById('STR'); 
if(el){ 
    el.checked = true; 
    el2 = el.cloneNode(false); 
    el.parentNode.insertBefore(el2, el); 
    el2.setAttribute('id',''); 
    el2.setAttribute('disabled','disabled'); 
    el2.removeAttribute('name'); 
    el.removeAttribute("disabled"); 
    el.style.display="none"; 
} 

が、これではない:最後のスニペットは完璧に動作Firefoxの/クロームで

el = document.getElementById('STR'); 
if(el){ 
    el.checked = true; 
    el2 = el.cloneNode(false); 
    el.parentNode.insertBefore(el2, el); 
    el2.setAttribute('id',''); 
    el2.setAttribute('disabled','disabled').removeAttribute('name'); 
    el.removeAttribute("disabled"); 
    el.style.display="none"; 
} 

答えて

2

これは私が知っているどのブラウザでも実際には機能しません。 Firefoxの "setAttribute()"関数は、FirefoxとChrome(そしておそらくIEでも)でundefinedを返します。

「チェーン」コードスタイルは、必要に応じてJavaScriptで行うことができますが、明示的に実装するためのフレームワークが必要です。 DOMメソッドは一般的にそのようには機能しません。