我看不出我做错了什么。我得到了一堆选择列表(下拉列表)并希望用<span>
替换它们,所以这是我的代码:
var selectListElements = document.getElementsByTagName('SELECT');
//select elements
for (var i = 0; i < selectListElements.length; i++) {
var currentSelectList = selectListElements[i];
//alert(selectListElements[i].name);
if (currentSelectList.dontReplace != 'true') {
var newNode = document.createElement('SPAN');
var nodeText = currentSelectList.options[currentSelectList.selectedIndex].value;
var parentNode = currentSelectList.parentNode;
parentNode.replaceChild(currentSelectList, newNode);
i--;
newNode.innerText = nodeText;
newNode.className = 'tableBody';
newNode.style.verticalAlign = 'top';
}
}
但是这给了我错误:
Uncaught NotFoundError:无法在'Node'上执行'replaceChild':要替换的节点不是此节点的子节点。
我看不出那是怎么回事!我抓住了父母,所以一定是个孩子!
我做错了什么?
答案 0 :(得分:11)
在replaceChild
中,新节点是第一个参数,而不是第二个参数。你让他们倒退了。
parentNode.replaceChild(newNode, currentSelectList);
另外,你为什么要i--
?这不是创造一个无限循环吗?
答案 1 :(得分:4)
使用现代香草JS!比以前更好/更干净的方式。通用表格:
target.replaceWith(element);
Can I Use - 86%2018年11月