簡體   English   中英

如何查找父節點是否沒有子節點

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM