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


Posted in Javascript onMarch 13, 2013

今天处理了一个日期选择器的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 相关文章推荐
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
May 23 Javascript
JavaScript:new 一个函数和直接调用函数的区别分析
Jul 10 Javascript
JS+Canvas绘制时钟效果
Aug 20 Javascript
浅谈bootstrap源码分析之scrollspy(滚动侦听)
Jun 06 Javascript
Vuejs第九篇之组件作用域及props数据传递实例详解
Sep 05 Javascript
jQuery查找节点并获取节点属性的方法
Sep 09 Javascript
基于jQuery实现顶部导航栏功能
Dec 27 Javascript
vue.js系列中的vue-fontawesome使用
Feb 10 Javascript
让webpack+vue-cil项目不再自动打开浏览器的方法
Sep 27 Javascript
深入理解es6块级作用域的使用
Mar 28 Javascript
微信小程序实现二维码签到考勤系统
Jan 16 Javascript
vue中渲染对象中属性时显示未定义的解决
Jul 31 Javascript
document.createElement()用法
Mar 13 #Javascript
js获得鼠标的坐标值的方法
Mar 13 #Javascript
JavaScript将Table导出到Excel实现思路及代码
Mar 13 #Javascript
九种js弹出对话框的方法总结
Mar 12 #Javascript
瀑布流布局并自动加载实现代码
Mar 12 #Javascript
JavaScript中数组对象的那些自带方法介绍
Mar 12 #Javascript
P3P Header解决Cookie跨域的问题
Mar 12 #Javascript
You might like
php面向对象全攻略 (一) 面向对象基础知识
2009/09/30 PHP
PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部
2009/10/22 PHP
PHP IF ELSE简化/三元一次式的使用
2011/08/22 PHP
php 在windows下配置虚拟目录的方法介绍
2013/06/26 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
2014/05/10 PHP
PHP二维数组排序简单实现方法
2016/02/14 PHP
php中二分法查找算法实例分析
2016/09/22 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
2018/12/06 PHP
微信公众平台开发教程②微信端分享功能图文详解
2019/04/10 PHP
用JS操作FRAME中的IFRAME及其内容的实现代码
2008/07/26 Javascript
JavaScript 闭包在封装函数时的简单分析
2009/11/28 Javascript
javascript中的一些注意事项 更新中
2010/12/06 Javascript
JavaScript入门之对象与JSON详解
2011/10/21 Javascript
js弹出的对话窗口永远保持居中显示
2012/12/15 Javascript
你必须知道的Javascript知识点之&quot;this指针&quot;的应用
2013/04/23 Javascript
基于jquery的文字向上跑动类似跑马灯的效果
2014/09/22 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
干货分享:让你分分钟学会javascript闭包
2015/12/25 Javascript
自动完成的搜索框javascript实现
2016/02/26 Javascript
js实现点击图片自动提交action的简单方法
2016/10/16 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
jQuery+CSS3实现点赞功能
2017/03/13 Javascript
从parcel.js打包出错到选择nvm的全部过程
2018/01/23 Javascript
Python读写unicode文件的方法
2015/07/10 Python
基于python(urlparse)模板的使用方法总结
2017/10/13 Python
python如何实现一个刷网页小程序
2018/11/27 Python
Python数据类型之列表和元组的方法实例详解
2019/07/08 Python
Python的PIL库中getpixel方法的使用
2020/04/09 Python
python简单实现9宫格图片实例
2020/09/03 Python
英国Zoro工具:手动工具,电动工具和个人防护用品
2016/11/02 全球购物
市场拓展计划书
2014/05/03 职场文书
英文感谢信格式
2015/01/21 职场文书
2015年统战工作总结
2015/05/19 职场文书
初一语文教学反思
2016/03/03 职场文书
Python 内置函数速查表一览
2021/06/02 Python
win10系统xps文件怎么打开?win10打开xps文件的两种操作方法
2022/07/23 数码科技