[英]How to find if parent Node has no Children
我不確定我是否使用了正確的語法,因為我的ELSEIF似乎沒有觸發。 這是正確的語法,還是測試它的最佳方法是什么?
<script>
function OnLoad() {
var links = document.getElementById("<%=TreeView1.ClientID %>").getElementsByTagName("a");
for (var i = 0; i < links.length; i++) {
links[i].setAttribute("href", "javascript:NodeClick(\"" + links[i].id + "\", \"" + links[i].getAttribute("href") + "\")");
}
}
window.onload = OnLoad;
function NodeClick(id, attribute) {
var nodeLink = document.getElementById(id);
if (nodeLink.hasChildNodes)
{
eval(attribute);
}
else if (nodeLink.hasChildNodes == false)
{
alert(nodeLink.innerHTML + " clicked");
window.open("../NewFolder/addNewProduct.aspx");
}
else
{
return;
}
}
</script>
如果我自己移動警報/打開窗口,則它可以工作,因此我認為問題出在這一行:
else if (nodeLink.hasChildNodes == false)
hasChildNodes的語法表示這是一個方法。我認為將其更改為方法應該可以解決問題
應當注意, hasChiildNodes()考慮空格和注釋 。 來自MDN文檔
childNodes還包括例如文本節點和注釋。 要跳過它們,請改用ParentNode.children。
即
if (nodeLink.hasChildNodes())
{
eval(attribute);
}
else if (!nodeLink.hasChildNodes())
{
alert(nodeLink.innerHTML + " clicked");
window.open("../NewFolder/addNewProduct.aspx");
}
else
{
return;
}
檢查兩個小提琴以獲得差異
parentNode.children.length;
如果它是0
,那么根本沒有子節點
console.log(document.getElementById('d1').children.length); //->0 console.log(document.getElementById('d2').children.length); //->3
<div id="d1"></div> <div id="d2"> <div></div> <div></div> <div></div> </div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.