-
IE7下,如果HTML元素是JS创建的,那么你采用document.getElementsByName()就得不到节点列表,怎么办?
-
getElementsByTagName() 可被用于任何的 HTML 元素,而getElementsByName()却不能,语法只能是document.getElementsByName(),并且好像不是W3C的标准,那么要方便得使用怎么办?
那么看看这个方法吧:
// 取得 指定元素的 子节点列表 //
// 子元素可以指定 name //
// 子元素可以指定 tagName //
function child()
{
// 取得指定元素的所有子元素中元素名为name的元素集合 (有name取name,无name取id )
this.getChildsByName = function(element, name)
{
var state = "name";
return this.getChilds(element, name, state);
};
// 取得指定元素的所有子元素中tagName为name的元素集合
this.getChildsByTagName = function(element, name)
{
var state = "tagName";
return this.getChilds(element, name, state);
};
// state为"name",取得 指定元素的 name为name子元素
// state为"tagName",取得 指定元素的 tagName为name子元素
this.getChilds = function(element, name, state)
{
return this.find(element, name, state);
//return this.list_elment; // 返回集合
};
// 通用方法
this.find = function(element, name, state)
{
var a = [];
if (null == element) { return a; }
var nodes = element.childNodes; // 所有子元素
for ( var i = 0; i < nodes.length; i++)
{
if (nodes[i].nodeType == 1)
{ //节点类型为1
var name_id = "";
if (state == "name")
{
name_id = nodes[i].name == null ? nodes[i].id
: nodes[i].name; // 有name取name,无name取id
}
else if (state == "tagName")
{
name_id = nodes[i].tagName;
}
else
{
alert("请传参数,指定按name或tagName搜索元素!");
return a;
}
if (name_id == name)
{
a.push(nodes[i]); // 加入集合
}
var bl = nodes[i].hasChildNodes(); // 有无下一层子元素
if (bl)
{
a=a.concat(this.find(nodes[i], name, state)); // 递归
}
}
}
return a;
};
}
//上下文单实例
$EC = new child();
如何使用?
$EC.getChildsByName(document,"name");
$EC.getChildsByName(document.getElementById("id"),"name");
$EC.getChildsByTagName(document,"input");
$EC.getChildsByTagName(document.getElementById("id"),"input");
//第一个参数是一个节点元素就行,可以随意获取该节点下的元素
方便不?让你爽到死,又兼容又方便,就是有时候效率会有点折扣。毕竟不能两全。呵呵
分享到:
相关推荐
如果找不到任何匹配的元素,则返回null。 **基本语法**: ```javascript var element = document.getElementById(id); ``` **示例**: 假设HTML中有以下元素: ```html <div id="example">Hello World ``` 可以...
本文将深入探讨IE中`getElementsByName()`方法对某些元素无效的问题及其解决方案。 `getElementsByName()`是JavaScript中用于获取文档中所有具有指定`name`属性的元素的集合。它返回一个NodeList对象,包含了页面上...
通过上述方法,我们可以在不改变原有代码逻辑的基础上,实现`getElementsByName`在IE和Firefox等浏览器之间的兼容。这种方法不仅适用于`td`元素,还可以扩展到其他任何需要根据`name`属性查找的元素类型,只需在遍...
在IE浏览器中,尤其是IE9之前的版本,getElementsByName方法有时不能正确返回name属性匹配的元素。这可能与IE特有的DOM实现差异有关。这种行为导致在IE浏览器中利用getElementsByName进行DOM查询时,可能无法找到...
详解JavaScript 中getElementsByName在IE中的注意事项 前言: 在IE5-9中是没有实现js的 getElementsByClassName()方法,但是实现了getElementsByName()方法,但是需要注意的是这个方法在IE5-9中也返回id属性匹配的指定...
JavaScript是Web开发中不可或缺的一部分,尤其在处理动态交互和页面逻辑时。然而,由于不同的浏览器在实现JavaScript标准时可能存在差异,导致在不同浏览器之间存在兼容性问题。本篇将主要探讨JavaScript在Internet ...
### js在IE和Firefox不同之处 在Web开发中,JavaScript(简称JS)是实现网页交互性的核心语言之一。然而,由于不同的浏览器对于JS标准的支持程度有所差异,这往往会导致跨浏览器兼容性问题的出现。IE(Internet ...
JavaScript在Firefox和IE之间的兼容性问题一直是前端开发者面临的一大挑战。由于这两个浏览器内核的不同,导致在处理某些JavaScript特性时存在差异。以下是一些常见的兼容性问题及其解决方案: 1. **Document.form....
以下是一些常见的JavaScript在IE和Firefox中的兼容性问题及解决方案: 1. **document.form.item问题** - 在IE中,可以通过`document.formName.item("itemName")`来访问表单元素,但在Firefox中不支持。推荐使用...
^) 但是对于document.getElementsByName 与document.getElementById 这个两个方法,IE中是并没有严格区分 ID 与 Name 的,比如: [removed] function useGetElementsByNameWithId(id) { var eles = d
在Firefox中,可以使用`getAttribute()`方法来获取元素的属性值,而在IE中,虽然也支持这种方法,但在某些情况下,直接使用属性名可能更方便。 ### 10. DOM节点的父级和子级 在处理DOM节点的父级和子级时,IE与...
首先,我们要理解IE6不支持`:checked`伪类,这意味着我们不能通过CSS直接控制被选中的radio按钮的样式。为了解决这个问题,我们可以利用JavaScript或者jQuery来检测radio按钮的状态,并根据状态改变对应的样式。 ...
1. 在IE浏览器中可以使用`document.all`配合元素ID属性值来访问DOM节点,但在Firefox等其他浏览器中不支持此方法。标准的访问方式是使用`document.getElementById`、`document.getElementsByName`和`document....
JavaScript 在不同浏览器之间的兼容性问题一直是开发者面临的重要挑战,尤其是IE和Firefox之间的差异。本文将详细探讨这些兼容性问题,并提供相应的解决方案。 1. `document.form.item` 问题: - 在IE中,可以通过...