JavaScript 函数在某个 if 语句后停止

标签 javascript if-statement for-loop

我最近尝试重新使用(有效!)javascript 函数并检测到一个奇怪的行为:在 for 循环中的某个 if 语句之后,函数停止。我看不出有任何理由。

如果将实际的 if 条件更改为“1==1”,则一切正常。但是由于代码如上,我收到了第一个警报(“我们开始了”),但我从未收到过第二个警报。因此,问题无法与循环联系起来(无穷无尽或类似的东西)。但除此之外,我绝对感到困惑和无助。 (使用 Firefox 26 和 Internet Explorer 11 测试)

<!DOCTYPE html SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <script type="text/javascript">
          function my_function(number_of_divs)
           {
             for (var k = 0; k <= number_of_divs; k++)
               {
                var index = k;
                if (document.getElementsByName("text_levels")[index].style.display == 'block')
                 {
                  alert('Here we go');
                 } 
               }
              alert('This is never shown');
           }
         </script>
    </head>

    <body>
        <a href="javascript:void" onclick="my_function(1)">Click</a>
        <div name="text_levels" style="display:block">The content of a div element</div>
    </body>
</html>

最佳答案

问题是您只有一个具有特定名称的元素,并且数组索引从零开始,因此您会在小于条件时停止。

for (var k = 0; k < number_of_divs; k++)

因为当它尝试使用 index=1 调用时,以下语句会抛出错误:

document.getElementsByName("text_levels")[index].style.display == 'block'

Here is working Demo

关于JavaScript 函数在某个 if 语句后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21284083/

相关文章:

javascript - 在输入文本javascript中输入数字时如何显示选项

linq-to-sql - LINQ 查询中没有结果给出 IF ELSE 语句中未设置对象实例的对象引用

mysql - 如何使用 MySql 在此查询中应用带有 WHERE CLAUSE 的 IF 条件

python - 在 Python 中编写多重嵌套 for 循环的最佳方法是什么

python - 重新计算循环内的字符串长度

php - 如何重复盒子直到达到最大宽度/高度?

php - 打开新页面并在同一 href 链接中执行 javascript

javascript - 为 Kwicks jQuery 插件创建 onAfter 事件

regex - 需要将公式应用于某些空白单元格

javascript - 如何在 HTML 中的 for 循环中使用文档