document.createElement()用法及注意事项

时间:2008-04-21 15:16:00 

今天处理了一个日期选择器的ie和ff的兼容问题,本来这种情况就很难找错误,找了好久才把错误定位到js中创建元素的方法document.createElement(),这个方法在ie下支持这样创建元素

var inputObj = document.createElement("<input type='text' size='8' style='border:0px;border-bottom:2px solid #c0c0c0;' " readonly >");

但是这样的情况在ff下是不兼容的。

还有就是特别注意input元素的创建:与 input 有关的元素有很多,比如:checkbox、radio、submit、reset...,因此创建 input 是个很特殊的用法。
创建不同的 input 正确的做法是:

<div id="board"></div>

<script type="text/javascript">
<!--
var board = document.getElementById("board");
var e = document.createElement("input");
e.type = "radio"; //紧接着上一行写
var obj = board.appendChild(e);
obj.checked = true;
//如下写法也是正确的:
//e.checked = true;
-->
</script>

针对 input,在 Netscape、Opera 和 Firefox 中 e.type 既可以在 appendChild 之前,也可以在其之后。但在 IE 中 type 属性必须在前,其它属性必须在后。

IE 创建元素,还有一个特点,就是可以连同属性一同创建,比如:var e = document.createElement("<input type='radio' name='r' value='1' />"); 这在其它浏览器中是不行的,所以我们也不支持。

总结:

针对非 input 元素,各浏览器中,既可以把对元素属性的改变写在显示元素(insertBefore 或 appendChild)之前,也可以在其后。

针对 input 元素,为了兼容 IE,type 属性写在显示元素(insertBefore 或 appendChild)之前,其它属性写在其后。

推荐:

除了 input 元素的 type 属性写在显示元素(insertBefore 或 appendChild)之前外,其它属性都写在显示元素之后。

改变属性时,对写在显示元素(insertBefore 或 appendChild)之前的用 createElement 的返回值,对写在显示元素之后的用 insertBefore 或 appendChild 的返回值。

标签:document.createElement,用法,js,ie
0
投稿

猜你喜欢

  • Js 按照MVC模式制作自定义控件

    2008-10-12 12:11:00
  • 如何使用FSO搜索硬盘文件

    2007-09-27 12:59:00
  • 使用Microsoft SQL Server 2000全文搜索功能构建Web搜索应用程序

    2008-09-29 12:32:00
  • 利用J2ME与ASP建立数据库连接

    2010-04-03 20:53:00
  • 显示/隐藏引出的CSS Bug

    2010-10-20 20:13:00
  • DreamWeaver批处理提高篇

    2007-12-03 11:34:00
  • 编码问题引起的折腾

    2009-07-03 12:43:00
  • css样式命名规则

    2008-04-30 12:31:00
  • 如果用JS得到字符串中出现次数最多的字母

    2007-12-03 21:01:00
  • Web UI 设计(网页设计)命名规范

    2009-05-13 13:06:00
  • 在Recordset对象中查询记录的方法

    2008-11-20 16:51:00
  • SQL Server数据库和Oracle行转列的特殊方案描述

    2010-07-26 15:14:00
  • 栅格:从混乱到秩序

    2008-07-02 12:09:00
  • SQL Server修改标识列方法 如自增列的批量化修改

    2012-06-06 19:42:35
  • ROW_NUMBER SQL Server 2005的LIMIT功能实现(ROW_NUMBER()排序函数)

    2012-06-06 20:11:21
  • asp日历代码 显示农历

    2007-09-23 08:40:00
  • Windows Server 2003 服务器安全设置--防火墙篇

    2010-07-22 22:45:00
  • Dreamweaver量身打造Wordpress留言板

    2009-12-09 17:08:00
  • SQL Server数据库优化经验总结

    2009-03-16 14:22:00
  • 人性化网页设计技巧

    2007-10-15 13:02:00
  • asp之家 网络编程 m.aspxhome.com