"对于" JavaScript中的循环没有做它应该做的事情

时间:2015-02-28 19:32:08

标签: javascript

我是JavaScript中的新手,语法以及通过点将对象和方法链接在一起的方式对我来说有点让人困惑。使用PHP程序风格我更加舒服。我一直在使用罗宾尼克松的书“学习JavaScript - 一步一步指南”。我一直在从他的书中取代码(因为它们已被呈现)并且已经在我的浏览器上运行这些脚本。但似乎并非所有代码都写得正确。下面的代码写出了动物的名字,这确实有效:

<!DOCTYPE html>
<html>
<head>
<title></title>
<style></style>
</head>
<body>
<script>
     displayItems("Dog", "Cat", "Pony", "Hamster", "Tortoise")

     function displayItems(v1, v2, v3, v4, v5)
     {
         document.write(v1 + "<br>")
         document.write(v2 + "<br>")
         document.write(v3 + "<br>")
         document.write(v4 + "<br>")
         document.write(v5 + "<br>")
     }
</script>
</body>
<html>

然而,作者然后尝试使用FOR循环而不是重复相同的行五次,我试图在我的浏览器上实现这一点,但我得到一个空白屏幕。我无法弄清楚这段代码可能出现的问题。如果一本500页的书的作者弄错了,那么有什么希望呢?

<html>
<head>
<title></title>
<style></style>
</head>
<body>
<script>
     displayItems("Dog", "Cat", "Pony", "Hamster", "Tortoise")

            for(j = 0; j < displayItems.arguments.length; ++j)
            document.write(displayItems[j] + "<br>")

</script>
</body>
<html>

3 个答案:

答案 0 :(得分:3)

三件事:

  • 您尚未声明您正在调用的displayItems功能
  • {@ 3}}已弃用,您应使用.arguments property代替
  • 您未访问arguments集合上的索引,而是displayItems

 displayItems("Dog", "Cat", "Pony", "Hamster", "Tortoise")

 function displayItems() {
     for (var j = 0; j < arguments.length; ++j) {
 //       ^^^ don't forget to declare variables
         document.write(arguments[j] + "<br>");
     }
 }

答案 1 :(得分:2)

只需将其用作数组:

 displayItems = ["Dog", "Cat", "Pony", "Hamster", "Tortoise"]

 for(var j = 0; j < displayItems.length; ++j)
     document.write(displayItems[j] + "<br>")

答案 2 :(得分:0)

使用此代码,我已更正它,始终记住必须声明正在调用的函数。

<html>
<head>
<title></title>
<style></style>
</head>
<body>
<script>
     displayItems("Dog", "Cat", "Pony", "Hamster", "Tortoise");
    function displayItems(v1, v2, v3, v4, v5)
     {
            for(j = 0; j < displayItems.arguments.length; ++j)
            {
                document.write(displayItems.arguments[j] + "<br>");
            }
    }

</script>
</body>
<html>