簡體   English   中英

Java語言中的For循環僅運行一次

[英]For loop in Javascript runs only once

這是我的代碼。 我不太明白為什么for循環只在內部和外部運行一次。 當我生成警報消息時, nodeList.lengthinnerNodeList.length顯示適當的值。 我看到ij都不會超過0。請指出代碼有問題。

function getCategoryElements() {
var newCategoryDiv = document.getElementById("category");
var nodeList = newCategoryDiv.childNodes;

for (var i = 0; i < nodeList.length; ++i) {
    var innerNodeList = nodeList[i].childNodes;
    alert("innerNodeList Length" + innerNodeList.length.toString());

    for (var j = 0; j < innerNodeList.length; ++j) {
        if (innerNodeList[j].nodeName == "SELECT") {
            alert("inside select Node value " + innerNodeList[j].nodeValue.toString());
            document.getElementById("newCategories").value = 
                document.getElementById("newCategories").value + '<%=delimiter%>' + innerNodeList[j].nodeValue;
        } else if (innerNodeList[j].nodeName == "TEXTAREA") {
            document.getElementById("newCategoriesData").value =
                document.getElementById("newCategoriesData").value + '<%=delimiter%>' + innerNodeList[j].nodeValue;
        }
    }
  }
}
var newCategoryDiv, nodeList, innerNodeList, innerNode, i, j;

newCategoryDiv = document.getElementById("category");
nodeList = newCategoryDiv.childNodes;

for (i = 0; i < nodeList.length; ++i) {
    innerNodeList = nodeList[i].childNodes;
    alert("innerNodeList Length" + innerNodeList.length.toString());

    for (j = 0; j < innerNodeList.length; ++j) {
        innerNode = innerNodeList[j];
        if (innerNode.nodeName === "SELECT") {
            alert("inside select Node value " + innerNode.nodeValue.toString());
            document.getElementById("newCategories").value += '<%=delimiter%>' + innerNode.nodeValue;
        } else if (innerNode.nodeName === "TEXTAREA") {
            document.getElementById("newCategoriesData").value += '<%=delimiter%>' + innerNode.nodeValue;
        }
        // Will this work?
        alert('Does this alert appear'); 
    }
}

我可以自由地重構您的代碼並對其進行一點清理。 如果您不知道,所有變量在Javascript中都有函數作用域,因此無論您在單個函數中的什么位置聲明它們,Javascript都將它們視為變量聲明是第一個語句。

看來您的代碼在語法上是正確的,因此我認為查找問題的最合邏輯的地方是在上一次alert功能調用之后可能發生錯誤。

為了對此進行檢查,請嘗試將另一個alert功能調用添加到內部循環的末尾。 如果它沒有運行,您將知道是這種情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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