`
hackerhs
  • 浏览: 14073 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

document.createElement()方法创建控件在chorme和firefox不兼容解决方法

阅读更多

转自:http://blog.csdn.net/w87875251l/article/details/6339639

document.createElement()用法及注意事项

今天处理了一个日期选择器的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();

/----------------------------直接可以使用此方法创建

  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");   

分享到:
评论

相关推荐

    JS写图层方法.document.createElement(div).htm

    JS写图层方法.document.createElement(div).

    js 用CreateElement动态创建标签示例

    //定义方法创建一个label标签 //*************************************// 代码如下: var createLabel = function(id, name, value) { var label_var = document.createElement(“label”); var label_id = document...

    document.createElement()用法

    `document.createElement()` 是JavaScript中的一个核心方法,用于在DOM(Document Object Model)中动态创建新的元素节点。这个方法允许开发者在网页加载后根据需要添加新的HTML元素,为页面增加交互性和动态性。它...

    javascript中createElement的两种创建方式.docx

    JavaScript提供了多种方法来创建和操作DOM元素,其中`createElement`是最基础且强大的API之一。本文将详细介绍JavaScript中利用`createElement`创建DOM元素的两种常见方式,并探讨它们之间的区别与应用场景。 #### ...

    稍微好一点的document.createElement-JavaScript开发

    docrel是document.createElement的瘦包装,使元素的创建更加容易。 它还有助于清理代码并避免重复。 没有依赖关系,没有blac docrel稍微好一点的document.createElement Docrel是document.createElement的一个薄包装...

    document.createElement(&quot;A&quot;)比较不错的属性

    本文将详细探讨`document.createElement("A...通过本篇的知识点分析,我们可以了解到`document.createElement("A")`方法不仅仅能创建一个`&lt;a&gt;`标签,还能够通过设置不同的属性来扩展它的功能,实现更加丰富的页面效果。

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

    在Netscape、Opera和Firefox中,`type`属性可以在将元素添加到DOM(如通过`appendChild`或`insertBefore`方法)之前或之后设置。但在Internet Explorer中,`type`属性必须在其他属性之前设置。例如: ```javascript...

    IE中document.createElement的iframe无法设置属性name的解决方法

    之前在IE遇到过设置不了iframe的name属性 JavaScript代码 var iframe = document.createElement('iframe'); iframe.name = 'ifr'; //iframe.setAttribute('name', 'ifr'); //这样也不行 上面两种方式都无法设置。...

    IE9+已经不对document.createElement向下兼容的解决方法

    在IE9及更高版本中,为了更好地遵循W3C标准,微软对某些方法进行了调整,使得`document.createElement`的行为与其他现代浏览器如Firefox和Chrome保持一致。这可能导致在旧的编写方式下出现兼容性问题,尤其是在尝试...

    动态加载js文件 document.createElement

    代码如下:var Rash=true; var msg=””; function norash() { if (confirm&#40;“确定要取消吗”&#41;) Rash=false; } function rashit() { setInterval(‘getrss()’,Int... script=document.createElement(‘sc

    document.createElement(A)比较不错的属性

    搞了一天,终于把A里面的属性弄出来 代码1: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]代码2: New Document [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

    document.frames在非IE浏览器中的解决办法

    然而,在实际应用过程中发现,`document.frames`这一属性在Internet Explorer(IE)浏览器中可以正常工作,但在其他非IE浏览器如Chrome、Firefox等中却无法正常使用。这主要是因为`document.frames`是IE特有的非标准...

    js展现table方法

    本文将深入探讨如何使用JavaScript来动态地创建、操作和展现`&lt;table&gt;`,以及如何结合其他技术,如单点登录(Single Sign-On, SSO)和选项卡切换,来增强用户界面。 首先,让我们关注如何使用JavaScript来创建一个...

    IE 不兼容的几个js问题及解决方法

    ### IE浏览器中的JavaScript不兼容性问题及解决方案 #### 一、Table操作问题 ...通过以上方法,我们可以有效地解决JavaScript在IE浏览器中的一些不兼容性问题,并提高Web应用的兼容性和用户体验。

    通过JavaScript下载文件到本地的方法(单文件)

    最近在做一个文件下载的功能,这里把做的过程中用的技术和坑简要总结下。 1. 单文件下载(a标签) 同源单文件 针对单文件的情况下,同源的文件,可以通过 &lt; a&gt; 标签的 download 属性下载文件 const elt = ...

    docrel更好用的documentcreateElement方法

    总之,`docrel`是一个针对`document.createElement`的增强工具,它通过提供更丰富的API和更简洁的语法,帮助开发者更轻松地创建和管理DOM元素,从而改善了JavaScript中的元素创建过程。如果你在日常工作中频繁处理...

Global site tag (gtag.js) - Google Analytics