【发布时间】:2018-07-24 04:34:38
【问题描述】:
我正在尝试在 javascript 中实现原生 document.getElementById。我已经在 javascript 中实现了document.getElementsByClassName。
function getElementsByClassName (className) {
var nodeList = [];
function test(node) {
if (node.classList && node.classList.contains(className)) {
nodeList.push(node);
}
for (var index = 0; index < node.childNodes.length; index++) {
test(node.childNodes[index]);
}
return nodeList;
}
test(document.body);
return nodeList;
};
// Fails here.
function getElementById(className) {
const result = [];
function getEachIDNode(node) {
if(node.contains(className)) {
return node;
}
for(let i=0; i<node.childNodes.length; i++) {
getEachIDNode(node.childNodes[i]);
}
}
getEachIDNode(document.body);
}
console.log(getElementsByClassName('winner'));
console.log(getElementById('test'));
<table>
<tr id="test">
<td>#</td>
<td class="winner">aa</td>
<td>bb</td>
<td>cc</td>
<td>dd</td>
</tr>
</table>
<table>
<tr>
<td>#</td>
<td class="winner">aa</td>
<td>bb</td>
<td>cc</td>
<td>dd</td>
</tr>
</table>
<table>
<tr>
<td>#</td>
<td class="winner">dd</td>
<td>cc</td>
<td>bb</td>
<td>aa</td>
</tr>
</table>
我正在尝试了解如何检查节点是否具有属性 ID。
谁能启发我?
【问题讨论】:
-
添加你的html代码,如果可能的话,请提供可运行的代码
-
您可以直接查看
node.id === className。虽然,className是getElementById的一个奇怪的参数名称。 -
@VicJordan 完成。请检查。我添加了我的实现。
标签: javascript dom