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 相关文章推荐
picChange 图片切换特效的函数代码
May 06 Javascript
IE下使用cloneNode注意事项分享
Nov 22 Javascript
javaScript 计算两个日期的天数相差(示例代码)
Dec 27 Javascript
JavaScript事件代理和委托详解
Apr 08 Javascript
使用vue.js开发时一些注意事项
Apr 27 Javascript
AngularJS基础 ng-click 指令示例代码
Aug 01 Javascript
微信公众号 客服接口的开发实例详解
Sep 28 Javascript
js获取浏览器的各种属性
Apr 27 Javascript
微信开发之企业付款到银行卡接口开发的示例代码
Sep 18 Javascript
bootstrap table.js动态填充单元格数据的多种方法
Jul 18 Javascript
jquery实现垂直手风琴菜单
Mar 04 jQuery
vue+Element-ui前端实现分页效果
Nov 15 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
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
PHP 模拟登陆MSN并获得用户信息
2009/05/16 PHP
PHP中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
PHP使用MPDF类生成PDF的方法
2015/12/08 PHP
在每个匹配元素的外部插入新元素的方法
2013/12/20 Javascript
JQuery球队选择实例
2015/05/18 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
JavaScript获取客户端IP的方法(新方法)
2016/03/11 Javascript
javascript html5 canvas实现可拖动省份的中国地图
2016/03/11 Javascript
JavaScript中各种引用类型的常用操作方法小结
2016/05/05 Javascript
JS留言功能的简单实现案例(推荐)
2016/06/23 Javascript
AngularJS自定义控件实例详解
2016/12/13 Javascript
Vue系列:通过vue-router如何传递参数示例
2017/01/16 Javascript
vue-router单页面路由
2017/06/17 Javascript
解决element-ui中下拉菜单子选项click事件不触发的问题
2018/08/22 Javascript
基于vue通用表单解决方案的思考与分析
2019/03/16 Javascript
深入浅出了解Node.js Streams
2019/05/27 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
Angular8 实现table表格表头固定效果
2020/01/03 Javascript
python简单实例训练(21~30)
2017/11/15 Python
解决win64 Python下安装PIL出错问题(图解)
2018/09/03 Python
selenium2.0中常用的python函数汇总
2019/08/05 Python
Python数据可视化:泊松分布详解
2019/12/07 Python
python3 tcp的粘包现象和解决办法解析
2019/12/09 Python
python cv2.resize函数high和width注意事项说明
2020/07/05 Python
茵宝(Umbro)英国官方商店:英国足球服装生产商
2016/12/29 全球购物
澳大利亚票务和娱乐市场领导者:Ticketmaster
2017/03/03 全球购物
俄罗斯品牌服装和鞋子的在线商店:KUPIVIP
2019/10/27 全球购物
linux系统都有哪些运行级别
2016/03/26 面试题
final, finally, finalize的区别
2012/03/01 面试题
学习经验演讲稿
2014/05/10 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
教师纪律作风整顿心得体会
2016/01/23 职场文书
详解 TypeScript 枚举类型
2021/11/02 Javascript
详解MySQL的主键查询为什么这么快
2022/04/03 MySQL
MySQL 数据库 增删查改、克隆、外键 等操作
2022/05/11 MySQL