【问题标题】:Javascript loop through array quits in the middleJavascript循环遍历数组在中间退出
【发布时间】:2011-12-27 16:46:36
【问题描述】:

我有一个数组,我试图通过 array.length 循环,但它无缘无故地停在循环中间。

代码:

    var id = ['88' , '89' , '90' , '91' , '92' , '93' , '94' , '95' , '96' , '97' , '98' ];
    var parent_id = ['1' , '1' , '88' , '1' , '88' , '91' , '93' , '93' , '92' , '90' , '97' ];

    function getAllLearningPaths(id){


    document.getElementById("catdiv").innerHTML += "THIS IS HE CURRENT CATEGORY ID : " + id     + "<br>"; 
    for(var i=0; i < id.length;i++)
    {
    document.getElementById("catdiv").innerHTML += "THIS IS HE CURRENT CATEGORY  PARENT    ID : " + parent_id[i] + "<br>"; 
    if(parent_id[i] == id && id[i] != id)
    {
      document.getElementById("catdiv").innerHTML += "I MADE IT!";
      getAllLearningPaths(parent_id[i]);


    }    
}

for(var i=0; i< Categories.length;i++)
{
    if(Categories[i] == id)
    {
        document.getElementById("l_ids_"+CategoriesValues[i]).checked = true;
       disablerow(document.getElementById("l_ids_"+CategoriesValues[i]), '1');


    }

}           

return;
}

categories 填充在代码中的其他位置。没问题。 问题是第一个循环没有通过第二次运行。 此代码输出:

这是他当前的类别 ID:88 这是他当前类别的父母 ID:1 这是他当前类别的父 ID:1

有什么想法吗?

【问题讨论】:

    标签: javascript arrays function loops return


    【解决方案1】:

    这条线看起来不对-

    if(parent_id[i] == id && id[i] != id)
    

    parent_id 看起来像一个整数数组,所以id 变量需要是一个整数才能通过这个测试。然后,您在 if 语句的下一部分 - id[i] != id 中将 i 作为数组引用。

    【讨论】:

      【解决方案2】:

      看起来可能是这一行 if(Categories[i] == id) 您正在对照 id 数组检查 Categories 中的值,您是否应该检查 id 内的索引?

      【讨论】:

      • id 是这个函数的一个参数
      【解决方案3】:

      必须抛出异常。与其试图找出代码中的问题所在,不如添加异常处理(使用 try catch)并使用 firebug 对其进行调试

      【讨论】:

        【解决方案4】:
        if(parent_id[i] == id && id[i] != id)
        

        在您的函数中,“id”指的是 parent_id,因为这是您传递给函数的参数。

        打破这条线意味着:

        if(parent_id[i] == parent_id && parent_id[i] != parent_id)
        

        我建议重命名您的参数变量或 id 数组。

        【讨论】:

          【解决方案5】:

          您的循环似乎运行了两次。我猜你正在为 id 参数传递一个像 '88' 这样的字符串。所以它为 id.length 返回 2,因为 id 是一个字符串。

          【讨论】:

            猜你喜欢
            • 2022-08-01
            • 2018-12-18
            • 1970-01-01
            • 2011-12-25
            • 1970-01-01
            • 1970-01-01
            • 2014-05-11
            • 2013-08-16
            • 1970-01-01
            相关资源
            最近更新 更多