类型错误附加子Javascript

类型错误附加子Javascript,javascript,appendchild,Javascript,Appendchild,我试图在NAV元素的end标记之前插入一些链接,因此在该元素中的其余链接之后。但是,我一直遇到错误消息“UncaughtTypeError:无法读取undefined的属性'appendChild',并且我无法确定TypeError在哪里/是什么。我错过了什么PS我理解“let”(或“const”)在某些情况下是var的替代品,但我不知道在这里是否可以使用它 注意:我在这里结束了:然后,但没有任何结果。在那里,我尝试了“stemon”的示例,但我无法找出应该在哪里添加我的appendChild,

我试图在NAV元素的end标记之前插入一些链接,因此在该元素中的其余链接之后。但是,我一直遇到错误消息“UncaughtTypeError:无法读取undefined的属性'appendChild',并且我无法确定TypeError在哪里/是什么。我错过了什么PS我理解“let”(或“const”)在某些情况下是var的替代品,但我不知道在这里是否可以使用它

注意:我在这里结束了:然后,但没有任何结果。在那里,我尝试了“stemon”的示例,但我无法找出应该在哪里添加我的appendChild,而仍然会得到相同的错误。i、 e:所有这些线索都不能让我理解我在这里到底错过了什么。。他们可能会给我一个答案,但显然不是我能理解的

var节点=document.getElementsByTagName(“NAV”);
ele=document.createElement(“a”);
var升压=0;
用于(升压=0;升压<8;升压++){
ele.innerHTML='test';
node.parentNode.appendChild(ele,node.nextSibling);
控制台日志(逐步升级);
}

菜单






因为
nav
没有父元素,所以它显示错误,并且您需要获取访问父元素的
节点[0]

这是有效的解决方案-

var节点=document.getElementsByTagName(“nav”);
ele=document.createElement(“a”);
var升压=0;
用于(升压=0;升压<8;升压++){
ele.innerHTML='test';
节点[0].parentNode.appendChild(元素,节点.nextSibling);
控制台日志(逐步升级);
}

菜单






因为
nav
没有父元素,所以它显示错误,并且您需要获取访问父元素的
节点[0]

这是有效的解决方案-

var节点=document.getElementsByTagName(“nav”);
ele=document.createElement(“a”);
var升压=0;
用于(升压=0;升压<8;升压++){
ele.innerHTML='test';
节点[0].parentNode.appendChild(元素,节点.nextSibling);
控制台日志(逐步升级);
}

菜单






document.getElementsByTagName(“nav”)返回所有匹配元素的数组,然后必须选择第一个

因为行
ele=document.createElement(“a”)在循环之外

您根本不需要
parentNode

let
关键字允许创建范围为包装块的变量。否则,变量的作用域是父函数,但它与您遇到的问题无关


闭包是您以后可能会学到的东西,它在对循环进行异步操作时很有用,但在您的案例中不需要使用。

document.getElementsByTagName(“nav”)
返回所有匹配元素的数组,然后您必须选择第一个

因为行
ele=document.createElement(“a”)在循环之外

您根本不需要
parentNode

let
关键字允许创建范围为包装块的变量。否则,变量的作用域是父函数,但它与您遇到的问题无关


闭包是您以后可能会学到的东西,它在对循环进行异步操作时非常有用,但在您的案例中不需要使用闭包。

您应该使用HTMLCollection方法item()来获取节点()。此外,不应将元素添加到父节点,而应添加到节点本身

const node = document.getElementsByTagName("nav").item(0);

for (let stepup = 0; stepup < 8; stepup++) {
    let el = document.createElement("a");
    el.innerHTML = 'test';
    el.href = "#";
    node.appendChild(el);
    node.insertBefore(document.createElement("br"), el);
}
const node=document.getElementsByTagName(“nav”).item(0);
对于(设步进=0;步进<8;步进++){
设el=document.createElement(“a”);
el.innerHTML='test';
el.href=“#”;
子节点(el);
node.insertBefore(document.createElement(“br”),el);
}

您应该使用HTMLCollection方法item()来获取节点()。此外,不应将元素添加到父节点,而应添加到节点本身

const node = document.getElementsByTagName("nav").item(0);

for (let stepup = 0; stepup < 8; stepup++) {
    let el = document.createElement("a");
    el.innerHTML = 'test';
    el.href = "#";
    node.appendChild(el);
    node.insertBefore(document.createElement("br"), el);
}
const node=document.getElementsByTagName(“nav”).item(0);
对于(设步进=0;步进<8;步进++){
设el=document.createElement(“a”);
el.innerHTML='test';
el.href=“#”;
子节点(el);
node.insertBefore(document.createElement(“br”),el);
}

节点
是元素,而不是元素
。您需要获得一个元素才能使用
parentNode
appendChild
node
是元素,而不是
元素。您需要获得一个元素才能使用
parentNode
appendChild
。感谢您的详细解释!这就成功了,我现在在实践中对此有了更多的了解。谢谢你的详细解释!这就成功了,我现在在实践中对此有了更多的了解。