我們在使用createElemen方法t創建一個元素節點的時候,似乎在IE下面怎么寫都可以,但切換到FF等其它瀏覽器卻總是會報錯。
比如我們要創建一個input元素,那么在IE下,我們可以有多種寫法:
要測試某種情況,請將其它情況注釋:
<script type="text/javascript">
//第一種,連同屬性一起被創建
var x = document.createElement("<input type='text' size='30' />");
//第二種,以空標簽形式創建
var x = document.createElement("<input />");
//第三種,以tagName形式創建
var x = document.createElement("input ");
document.body.appendChild(x);
</script>
以上3種方式在IE中均可以通行,然后再非IE核心的瀏覽器中(如FF,OP,SF等),前2種寫法均會報錯,無法正確創建這個input元素。
標准寫法為第3種,放之各瀏覽器而皆准。
由於在IE中使用createElement方法創建元素節點時,該元素的屬性可以一起被創建,但這在其它瀏覽器中是行不通的,所以我們還得通過其它的方式來創建其屬性。
創建一個帶屬性的元素節點的標准寫法:
<script type="text/javascript">
var x = document.createElement("input");
x.setAttribute("type","text");
x.setAttribute("size","30");
document.body.appendChild(x);
</script>
增加一個屬性就document.setAttribute("attribute","value")一次。
后來發現其實還可以這樣來寫:
<script type="text/javascript">
var x = document.createElement("input");
x.type = "text";
document.body.appendChild(x);
</script>
但使用這種來創建屬性,好像並不是素所有的屬性都能被創建,比如input的size,value,class等用這種方式就無法創建,至於具體原因我還不大清楚。所以推薦使用前面那種寫法。