位置:海鸟网 > IT > JavaScript >

分析createElement在各浏览器中有何不同

createElement在各浏览器中有何不同?本文详细为你介绍。我们在使用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/">
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等用这种方式就无法创建,至于具体原因我还不大清楚。所以推荐使用前面那种写法。