【问题标题】:javascript array/loop not workingjavascript数组/循环不起作用
【发布时间】:2013-12-17 23:41:05
【问题描述】:
<!doctype html>
<html lang="en">
    <head>
        <title>Test</title>
        <meta charset="utf-8">
        <script>
            function onetwothree() {
                var girl = ["Ariana Grande", "Melanie Iglesias", "Kate Upton", "Vanessa Hudgens", "Miley Cyrus", "Jennifer Aniston", "Hannah Montana"];
                for (i = 0; i < girl.length; i++) {
                    var girlOfDay = girl[i];
                    var id = "w" + i;
                    var li = getElementById(id);
                    li.innerHTML = girlOfDay;
                }
            }
            window.onload = onetwothree;
        </script>
    </head>

    <body>
        <ul>
            <li id="w0"></li>
            <li id="w1"></li>
            <li id="w2"></li>
            <li id="w3"></li>
            <li id="w4"></li>
            <li id="w5"></li>
            <li id="w6"></li>
        </ul>
    </body>
</html>

为什么它不能只显示项目符号而不显示名称?我对此很陌生,我在一本书中做了一个这样的例子,它起作用了,然后我试图想出我自己的,但它不起作用

【问题讨论】:

  • 你确定这个问题是对的?
  • var li = document.getElementById(id);
  • 在 for 循环中声明变量不是好习惯。我建议先声明它们,var girlOfDay, id, li; 然后for...
  • 等等为什么我在哪里声明它们很重要?这与全局变量和局部变量有关吗?因为我有点明白那些是什么,但我还没有在我正在阅读的书中的那个时候

标签: javascript html arrays loops


【解决方案1】:

这一行:

var li=getElementById(id);

应该这样说:

var li=document.getElementById(id);

在解决此类问题时,请始终使用所有现代浏览器的开发工具中提供的 JavaScript 控制台。例如,使用您的原始代码,Chrome 会报告以下错误:

Uncaught ReferenceError: getElementById is not defined [test.html:13]

【讨论】:

  • 这是我第二次忘记“文件”了,谢谢
【解决方案2】:

你有两个问题:

  1. getElementById 不是正确的调用方式,document.getElementById 是正确的
  2. 你实际上并没有调用你的函数 window.onload=onetwothree; 不起作用,window.onload=onetwothree(); 确实起作用

工作小提琴:http://jsfiddle.net/den23/

【讨论】:

  • 根据我对功能的了解,我认为这就是它的完成方式,我知道它通常是如何完成的。但是在书中,当他们用window.onload调用它时它没有“()”,我认为这很奇怪,并决定在最后使用和不使用“()”进行测试,它只有在没有时才有效“()”,我不知道这是为什么,如果它有助于我使用 chrome
  • 贾斯汀是正确的。他将window.onload 变量设置为指向他的函数(而不是调用它)。它将在窗口的load 事件期间被调用。
  • jsfiddle 不能让你直接访问window.onload。相反,您从下拉列表中选择onLoad(您已经这样做了),jsfiddle 直接调用您的代码。在浏览器中,您不希望自己调用该函数,因为它会在文档完全加载之前运行。相反,您将您的函数分配给window.onload,并由浏览器在适当的时间调用。 jsfiddle.net/den23/1
猜你喜欢
  • 1970-01-01
  • 2015-03-09
  • 1970-01-01
  • 1970-01-01
  • 2020-08-01
  • 1970-01-01
  • 2013-07-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多