如果您要添加的表格单元格本身在 DOM 中,那应该可以工作。(所以我可能不得不删除这个答案;最初我认为document.getElementsByName
已被弃用,但我错了)。这是一个使用示例getElementsByName
:
实时复制| 直播源
(function() {
// Get the target
var target = document.getElementById("target");
// Dynamically add content
target.innerHTML =
'<div name="special">special 1</div>' +
'<div name="special">special 2</div>' +
'<div name="special">special 3</div>';
// Get those elements
var list = document.getElementsByName("special");
// Prove we got them
var p = document.createElement('p');
p.innerHTML = "Found " + list.length + " 'special' elements";
document.body.appendChild(p);
})();
当然,因为它是 的函数document
,它将找到所有带有 的元素name="special"
,而不仅仅是您添加到表格单元格中的元素。
name
如果不允许元素具有该属性,则上述内容不适用于 IE 。例如,如果您寻找getElementsByName("special")
. 它将忽略<div name="special">
但 find <input name="special">
,因为name
它不是div
元素的有效属性。此 MSDN 文章中的详细信息。更糟糕的是,IE 将包含id
匹配的元素,尽管这当然与name
. 叹
除非您需要支持 IE7 及更早版本(例如,除非您正在为中国开发),否则您可以使用Element#querySelectorAll
selector '[name="special"]'
。这将只在元素内查找使用该name
属性的元素。
示例:Live Copy | 直播源
(function() {
// Get the target
var target = document.getElementById("target");
// Dynamically add content
target.innerHTML =
'<div name="special">special 1</div>' +
'<div name="special">special 2</div>' +
'<div name="special">special 3</div>';
// Get those elements
var list = target.querySelectorAll('[name="special"]');
// Prove we got them
var p = document.createElement('p');
p.innerHTML = "Found " + list.length + " 'special' elements";
document.body.appendChild(p);
})();
如果您需要支持 IE7 或更早版本,您可以查看其他 Stack Overflow 问题和我的回答。这个问题指向这篇关于添加querySelectorAll
到的文章document
,我对这个问题的回答是关于如何在特定于元素的级别上模拟它。
因此,将那篇文章中的代码与我对另一个问题的回答和上面的示例结合起来,我们得到:
实时复制| 直播源
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
<div id="target"></div>
<script>
(function() {
// IE7 support for querySelectorAll. Supports multiple / grouped selectors and the attribute selector with a "for" attribute. http://www.codecouch.com/
if (!document.querySelectorAll) {
(function(d, s) {
d=document, s=d.createStyleSheet();
d.querySelectorAll = function(r, c, i, j, a) {
a=d.all, c=[], r = r.replace(/\[for\b/gi, '[htmlFor').split(',');
for (i=r.length; i--;) {
s.addRule(r[i], 'k:v');
for (j=a.length; j--;) a[j].currentStyle.k && c.push(a[j]);
s.removeRule(0);
}
return c;
}
})();
}
var qsaWorker = (function() {
var idAllocator = 10000;
function qsaWorkerShim(element, selector) {
var needsID = element.id === "";
if (needsID) {
++idAllocator;
element.id = "__qsa" + idAllocator;
}
try {
return document.querySelectorAll("#" + element.id + " " + selector);
}
finally {
if (needsID) {
element.id = "";
}
}
}
function qsaWorkerWrap(element, selector) {
return element.querySelectorAll(selector);
}
// Return the one this browser wants to use
return document.createElement('div').querySelectorAll ? qsaWorkerWrap : qsaWorkerShim;
})();
// Get the target
var target = document.getElementById("target");
// Dynamically add content
target.innerHTML =
'<div name="special">special 1</div>' +
'<div name="special">special 2</div>' +
'<div name="special">special 3</div>';
// Get those elements
var list = qsaWorker(target, '[name="special"]');
// Prove we got them
var p = document.createElement('p');
p.innerHTML = "Found " + list.length + " 'special' elements";
document.body.appendChild(p);
})();
</script>
</body>
</html>
在 IE7 中有效。