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 event事件在IE、FF兼容性问题
Jan 01 Javascript
让AJAX不依赖后端接口实现方案
Dec 03 Javascript
浏览器打开层自动缓慢展开收缩实例代码
Jul 04 Javascript
利用JS判断用户是否上网(连接网络)
Dec 23 Javascript
使用node.js 获取客户端信息代码分享
Nov 26 Javascript
jQuery基于json与cookie实现购物车的方法
Apr 15 Javascript
bootstrap导航栏、下拉菜单、表单的简单应用实例解析
Jan 06 Javascript
javascript 组合按键事件监听实现代码
Feb 21 Javascript
详解node child_process模块学习笔记
Jan 24 Javascript
JS学习笔记之数组去重实现方法小结
May 29 Javascript
bootstrap实现嵌套模态框的实例代码
Jan 10 Javascript
微信小程序实现底部弹出框
Nov 18 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
PHP4实际应用经验篇(3)
2006/10/09 PHP
如何批量替换相对地址为绝对地址(利用bat批处理实现)
2013/05/27 PHP
php中session使用示例
2014/03/29 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
2014/09/06 PHP
php正则匹配html中带class的div并选取其中内容的方法
2015/01/13 PHP
php简单分页类实现方法
2015/02/26 PHP
js操作时间(年-月-日 时-分-秒 星期几)
2010/06/20 Javascript
checkbox全选所涉及到的知识点介绍
2013/12/31 Javascript
js点击出现悬浮窗效果不使用JQuery插件
2014/01/20 Javascript
jQuery的缓存机制浅析
2014/06/07 Javascript
JavaScript数据类型检测代码分享
2015/01/26 Javascript
JavaScript取得键盘按下方向键是哪个的方法
2015/08/04 Javascript
Web程序员必备的7个JavaScript函数
2016/06/14 Javascript
Jquery Easyui选项卡组件Tab使用详解(10)
2016/12/18 Javascript
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
react-navigation之动态修改title的内容
2018/09/26 Javascript
解决vue项目nginx部署到非根目录下刷新空白的问题
2018/09/27 Javascript
使用vue根据状态添加列表数据和删除列表数据的实例
2018/09/29 Javascript
antd组件Upload实现自己上传的实现示例
2018/12/18 Javascript
微信小程序实现搜索指定景点周边美食、酒店
2019/05/18 Javascript
详解Python编程中time模块的使用
2015/11/20 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
2017/12/14 Python
flask 框架操作MySQL数据库简单示例
2020/02/02 Python
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
Lulu & Georgia官方网站:购买地毯、家具、抱枕、壁纸、床上用品等
2018/03/19 全球购物
澳大利亚儿童鞋在线:The Trybe
2019/07/16 全球购物
char型变量中能不能存贮一个中文汉字
2015/07/08 面试题
会计毕业生自我鉴定
2013/11/04 职场文书
无传销社区工作方案
2014/05/13 职场文书
学校教师师德师风承诺书
2015/04/28 职场文书
党员志愿者服务倡议书
2015/04/29 职场文书
总经理年会致辞
2015/07/29 职场文书
2015年中秋寄语
2015/07/31 职场文书
《植物妈妈有办法》教学反思
2016/02/23 职场文书
22句经典语录:送给优柔寡断和胡思乱想的朋友们
2019/12/13 职场文书
mongodb清除连接和日志的正确方法分享
2021/09/15 MongoDB