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 相关文章推荐
js导出table数据到excel即导出为EXCEL文档的方法
Oct 10 Javascript
再分享70+免费的jquery 图片滑块效果插件和教程
Dec 15 Javascript
使用javascript提交form表单方法汇总
Jun 25 Javascript
Bootstrap 布局组件(全)
Jul 18 Javascript
微信小程序 数据封装,参数传值等经验分享
Jan 09 Javascript
vue模板语法-插值详解
Mar 06 Javascript
vue加载自定义的js文件方法
Mar 13 Javascript
Express之托管静态文件的方法
Jun 01 Javascript
浅谈react性能优化的方法
Sep 05 Javascript
Vue 样式绑定的实现方法
Jan 15 Javascript
javascript实现抢购倒计时程序
Aug 26 Javascript
vue-cil之axios的二次封装与proxy反向代理使用说明
Apr 07 Vue.js
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+MYSQL会员系统的登陆即权限判断实现代码
2011/09/23 PHP
php实现利用phpexcel导出数据
2013/08/24 PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
2015/10/08 PHP
PHP检测链接是否存在的代码实例分享
2016/05/06 PHP
基于PHP的登录和注册的功能的实现
2020/08/06 PHP
Extjs优化(一)删除冗余代码提高运行速度
2013/04/15 Javascript
js阻止冒泡及jquery阻止事件冒泡示例介绍
2013/11/19 Javascript
JS中window.open全屏命令解析及使用示例
2013/12/11 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
Javascript监视变量变化的方法
2015/06/09 Javascript
JavaScript数组对象赋值用法实例
2015/08/04 Javascript
[原创]jQuery常用的4种加载方式分析
2016/07/25 Javascript
如何正确理解javascript的模块化
2017/03/02 Javascript
基于jQuery实现一个marquee无缝滚动的插件
2017/03/09 Javascript
Vue动态实现评分效果
2017/05/24 Javascript
vue中将网页打印成pdf实例代码
2017/06/15 Javascript
关于JavaScript中forEach和each用法浅析
2017/07/27 Javascript
浅析node.js的模块加载机制
2018/05/25 Javascript
vue中axios的封装问题(简易版拦截,get,post)
2018/06/15 Javascript
微信小程序的部署方法步骤
2018/09/04 Javascript
node.js微信小程序配置消息推送的实现
2019/02/13 Javascript
vue中created和mounted的区别浅析
2019/08/13 Javascript
javascript移动端 电子书 翻页效果实现代码
2019/09/07 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
JavaScript 链表定义与使用方法示例
2020/04/28 Javascript
Python编写简单的HTML页面合并脚本
2016/07/11 Python
详解python开发环境搭建
2016/12/16 Python
Django结合ajax进行页面实时更新的例子
2019/08/12 Python
Python 词典(Dict) 加载与保存示例
2019/12/06 Python
乔丹诺(Giordano)酒庄德国官网:找到最好的意大利葡萄酒
2017/12/28 全球购物
瑞典多品牌连锁店:Johnells
2021/01/13 全球购物
工业学校毕业生自荐信范文
2014/01/03 职场文书
宿舍打麻将检讨书
2014/01/24 职场文书
《找不到快乐的波斯猫》教学反思
2014/02/24 职场文书
《认识年月日》教学反思
2016/02/19 职场文书
Python基本数据类型之字符串str
2021/07/21 Python