document.createElement()用法及注意事项(ff下不兼容)

 更新时间:2013年03月13日 17:24:19   投稿:mdxy-dxy  
今天处理了一个日期选择器的ie和ff的兼容问题,本来这种情况就很难找错误,找了好久才把错误定位到js中创建元素的方法document.createElement(),这个方法在ie下支持这样创建元素

今天处理了一个日期选择器的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 的返回值。

复制代码 代码如下:

1.var echkbox=document.createElement("input");   
2.echkbox.setAttribute("type","checkbox");   
3.echkbox.setAttribute("id","inputid");   
4.echkbox.setAttribute("name","inputname");   
5.echkbox.setAttribute("value","inputvalue");   
6.var addhere=document.getElementById("someElementId");   
7.addhere.appendChild(echkbox);   
8.echkbox.setAttribute("checked","checked");   
9.alert(document.getElementById("inputid").checked);

<!--document方法:
getElementById(id)                            返回指定结点的引用
getElementsByTagName(name)       返回文档中所有匹配的元素的集合
createElement(name)                         创建指定类型的新结点
createTextNode(text)                         创建一个纯文本结点
element方法:
getAttribute(id)                                   返回指定属性的值
setAttribute(id,value)                         给属性赋值
removeAttribute(id)                           移除指定属性和它的值
getElementsByTagName(name)       返回结点内所有匹配的元素的集合
node方法:
appendChild(child)                             给指定结点添加一个新的子结点
removeChild(child)                             移除指定结点的子结点
replaceChild(newChild,oldChild)       替换指定结点的子结点
insertBefore(newChild,refChild)       在同一层级的结点前面插入新结点
hasChildNodes()                                 如果结点有子结点则返回true
node属性:
nodeName                                         以字符串的格式存放结点的名称
nodeType                                           以整型数据格式存放结点的类型
nodeValue                                          以可用的格式存放结点的值
parentNode                                        指向结点的父结点的引用
childNodes                                         指向子结点的引用的集合
firstChild                                            指向子结点结合中的第一个子结点的引用
lastChild                                             指向子结点结合中的最后一个子结点的引用


动态加载js

复制代码 代码如下:

var Rash=true;
var msg="";
function norash()
{
   if (confirm("确定要取消吗"))
   Rash=false;
}
function rashit()
{
    setInterval('getrss()',Inttime);
}
function getrss()
{
if (Rash==true)
{
     head=document.getElementsByTagName('head').item(0);
    script=document.createElement('script');
    script.src='INCLUDE/AutoUpdate.asp';
   script.type='text/javascript';
   script.defer=true;
   void(head.appendChild(script));
   window.status=msg;
   }
}
rashit();

相关文章

  • javascript Discuz代码中的msn聊天小功能

    javascript Discuz代码中的msn聊天小功能

    参考discuz的msn聊天功能代码
    2008-05-05
  • Webpack常见使用配置小结

    Webpack常见使用配置小结

    本文主要介绍了Webpack常见使用配置小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • 解决layui追加或者动态修改的表单元素“没效果”的问题

    解决layui追加或者动态修改的表单元素“没效果”的问题

    今天小编就为大家分享一篇解决layui追加或者动态修改的表单元素“没效果”的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • JavaScript实现256色转灰度图

    JavaScript实现256色转灰度图

    本文主要介绍了JavaScript实现256色转灰度图的示例代码,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • 原生js实现淘宝购物车功能

    原生js实现淘宝购物车功能

    这篇文章主要向大家推荐一个原生js实现淘宝购物车功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • 浅谈JS中String()与 .toString()的区别

    浅谈JS中String()与 .toString()的区别

    下面小编就为大家带来一篇浅谈JS中String()与 .toString()的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • js+canvas实现两张图片合并成一张图片的方法

    js+canvas实现两张图片合并成一张图片的方法

    这篇文章主要介绍了js+canvas实现两张图片合并成一张图片的方法,结合实例形式分析了JavaScript结合HTML5 canvas实现图片合并的操作技巧,并附带了Java图片合并的实现方法,需要的朋友可以参考下
    2019-11-11
  • 详解JavaScript的流程控制语句

    详解JavaScript的流程控制语句

    这篇文章主要介绍了JavaScript的流程控制语句,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • 深入浅出理解javaScript原型链

    深入浅出理解javaScript原型链

    这篇文章主要介绍了对javaScript原型链的理解,以实例形式对javaScript原型链的概念及相关使用技巧做了较为浅显易懂的分析,需要的朋友可以参考下
    2015-05-05
  • 让AJAX不依赖后端接口实现方案

    让AJAX不依赖后端接口实现方案

    网页中的ajax请求越来越多,或者应用开始就一直使用ajax与后端进行数据交换,本文将详细介绍,需要的朋友可以参考下
    2012-12-12

最新评论