作家
登录

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

作者: 来源:www.28hudong.com 2013-03-30 00:08:08 阅读 我要评论

今天处理了一个日期选择器的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() 如果结点有子结点则返回truenode属性: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();

  推荐阅读

  两种方法实现文本框输入内容提示消失

第一种方法: 基于HTML5 input标签的新特性 - placeholder 。另外,x-webkit-speech 属性可以实现语音输入功能。 复制代码 代码如下: <div><input type="email" name="email" spellcheck="false" placeholder="邮 >>>详细阅读


本文标题:document.createElement()用法及注意事项(ff下不兼容)

地址:http://www.17bianji.com/kaifa2/JS/22216.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)