转自: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 的返回值。
- var echkbox=document.createElement("input");
-
echkbox.setAttribute("type","checkbox");
-
echkbox.setAttribute("id","inputid");
-
echkbox.setAttribute("name","inputname");
-
echkbox.setAttribute("value","inputvalue");
-
var addhere=document.getElementById("someElementId");
- addhere.appendChild(echkbox);
-
echkbox.setAttribute("checked","checked");
-
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();
/----------------------------直接可以使用此方法创建
- var echkbox=document.createElement("input");
-
echkbox.setAttribute("type","checkbox");
-
echkbox.setAttribute("id","inputid");
-
echkbox.setAttribute("name","inputname");
-
echkbox.setAttribute("value","inputvalue");
分享到:
相关推荐
JS写图层方法.document.createElement(div).
//定义方法创建一个label标签 //*************************************// 代码如下: var createLabel = function(id, name, value) { var label_var = document.createElement(“label”); var label_id = document...
`document.createElement()` 是JavaScript中的一个核心方法,用于在DOM(Document Object Model)中动态创建新的元素节点。这个方法允许开发者在网页加载后根据需要添加新的HTML元素,为页面增加交互性和动态性。它...
JavaScript提供了多种方法来创建和操作DOM元素,其中`createElement`是最基础且强大的API之一。本文将详细介绍JavaScript中利用`createElement`创建DOM元素的两种常见方式,并探讨它们之间的区别与应用场景。 #### ...
docrel是document.createElement的瘦包装,使元素的创建更加容易。 它还有助于清理代码并避免重复。 没有依赖关系,没有blac docrel稍微好一点的document.createElement Docrel是document.createElement的一个薄包装...
本文将详细探讨`document.createElement("A...通过本篇的知识点分析,我们可以了解到`document.createElement("A")`方法不仅仅能创建一个`<a>`标签,还能够通过设置不同的属性来扩展它的功能,实现更加丰富的页面效果。
在Netscape、Opera和Firefox中,`type`属性可以在将元素添加到DOM(如通过`appendChild`或`insertBefore`方法)之前或之后设置。但在Internet Explorer中,`type`属性必须在其他属性之前设置。例如: ```javascript...
之前在IE遇到过设置不了iframe的name属性 JavaScript代码 var iframe = document.createElement('iframe'); iframe.name = 'ifr'; //iframe.setAttribute('name', 'ifr'); //这样也不行 上面两种方式都无法设置。...
在IE9及更高版本中,为了更好地遵循W3C标准,微软对某些方法进行了调整,使得`document.createElement`的行为与其他现代浏览器如Firefox和Chrome保持一致。这可能导致在旧的编写方式下出现兼容性问题,尤其是在尝试...
代码如下:var Rash=true; var msg=””; function norash() { if (confirm(“确定要取消吗”)) Rash=false; } function rashit() { setInterval(‘getrss()’,Int... script=document.createElement(‘sc
搞了一天,终于把A里面的属性弄出来 代码1: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]代码2: New Document [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
然而,在实际应用过程中发现,`document.frames`这一属性在Internet Explorer(IE)浏览器中可以正常工作,但在其他非IE浏览器如Chrome、Firefox等中却无法正常使用。这主要是因为`document.frames`是IE特有的非标准...
本文将深入探讨如何使用JavaScript来动态地创建、操作和展现`<table>`,以及如何结合其他技术,如单点登录(Single Sign-On, SSO)和选项卡切换,来增强用户界面。 首先,让我们关注如何使用JavaScript来创建一个...
### IE浏览器中的JavaScript不兼容性问题及解决方案 #### 一、Table操作问题 ...通过以上方法,我们可以有效地解决JavaScript在IE浏览器中的一些不兼容性问题,并提高Web应用的兼容性和用户体验。
最近在做一个文件下载的功能,这里把做的过程中用的技术和坑简要总结下。 1. 单文件下载(a标签) 同源单文件 针对单文件的情况下,同源的文件,可以通过 < a> 标签的 download 属性下载文件 const elt = ...
总之,`docrel`是一个针对`document.createElement`的增强工具,它通过提供更丰富的API和更简洁的语法,帮助开发者更轻松地创建和管理DOM元素,从而改善了JavaScript中的元素创建过程。如果你在日常工作中频繁处理...