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 相关文章推荐
jQuery 对象中的类数组操作
Apr 27 Javascript
jQuery中使用了document和window哪些属性和方法小结
Sep 13 Javascript
Jquery同辈元素选中/未选中效果的实例代码
Aug 01 Javascript
JS倒计时代码汇总
Nov 25 Javascript
JavaScript中的数组操作介绍
Dec 30 Javascript
JavaScript检查子字符串是否在字符串中的方法
Feb 03 Javascript
快速掌握Node.js模块封装及使用
Mar 21 Javascript
基于zepto.js简单实现上传图片
Jun 21 Javascript
JS图片等比例缩放方法完整示例
Aug 03 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
Apr 17 Javascript
基于Vue和Element-Ui搭建项目的方法
Sep 06 Javascript
用vue 实现手机触屏滑动功能
May 28 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 addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
php禁止某ip或ip地址段访问的方法
2015/02/25 PHP
使用xampp搭建运行php虚拟主机的详细步骤
2015/10/21 PHP
PHP全局变量与超级全局变量区别分析
2016/04/01 PHP
php 开发中加密的几种方法总结
2017/03/22 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
2013/04/17 Javascript
使用js判断当前时区TimeZone是否是夏令时
2014/02/23 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
2014/03/05 Javascript
一起学写js Calender日历控件
2016/04/14 Javascript
node 命令方式启动修改端口的方法
2018/05/12 Javascript
详解关于vue-area-linkage走过的坑
2018/06/27 Javascript
vuejs使用axios异步访问时用get和post的实例讲解
2018/08/09 Javascript
在Vue 中使用Typescript的示例代码
2018/09/10 Javascript
微信公众平台 发送模板消息(Java接口开发)
2019/04/17 Javascript
微信小程序使用字体图标的方法
2019/05/23 Javascript
Python实现抓取网页并且解析的实例
2014/09/20 Python
Python的Tornado框架异步编程入门实例
2015/04/24 Python
PyQt4实现下拉菜单可供选择并打印出来
2018/04/20 Python
Python解决走迷宫问题算法示例
2018/07/27 Python
Python可迭代对象操作示例
2019/05/07 Python
python迭代器常见用法实例分析
2019/11/22 Python
在Python中使用MongoEngine操作数据库教程实例
2019/12/03 Python
Python箱型图处理离群点的例子
2019/12/09 Python
Python类反射机制使用实例解析
2019/12/30 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
2020/02/29 Python
美国羊皮公司:Overland
2018/01/15 全球购物
英国打印机墨盒销售网站:Ink Factory
2019/10/07 全球购物
一年级评语大全
2014/04/23 职场文书
工地宣传标语
2014/06/18 职场文书
企业爱岗敬业演讲稿
2014/09/04 职场文书
个人三严三实对照检查材料思想汇报
2014/09/22 职场文书
党员示范岗材料
2014/12/19 职场文书
医学生自荐信范文(2016精选篇)
2016/01/28 职场文书
MySql数据库触发器使用教程
2022/06/01 MySQL