Javascript通过数组循环并输出.innerhtml

时间:2014-04-01 04:23:24

标签: javascript html while-loop

我是Javascript的新手并且自学。我试图设置一个函数来编写数组AmericanCars的每个元素,并在元素之间留一个空格。

我有它工作,所以当我使用.innerHTML=AmericanCars[Index Position]加上一个不间断的空格时,我可以编写一个数组元素。现在我尝试使用while循环遍历它,但我只得到"未定义的输出。"

如何让.innerHTML写出数组中每个元素之间有空格?有没有比使用While循环更简单的方法,或者我的While循环只是格式错误。

<html>
    <head>
    </head>
    <body>

        <script language="javascript" type="text/javascript">
        var AmericanCars=["Chevy", "Ford", "Dodge"];
        var JapaneseCars=["Honda", "Toyota", "Subaru"];
        var FavoriteCars=[];

        function ListAmericanCars() {

        var arraycounter = 0; 

        /* Use array counter to set the value that is displayed in innerHTML's square [] brackets */
            while (arraycounter <= AmericanCars.length) {

                document.getElementById('content').innerHTML = AmericanCars[arraycounter] + "&nbsp ";
                arraycounter++;
            }
        }
        </script>

        <p> What Are Your Favorite American Cars?  Answer: 
            <span id="content">______________
            </span>
        </p>

        <button onclick="ListAmericanCars()">
            American Cars Function
        </button>
    </body>
</html>

3 个答案:

答案 0 :(得分:3)

数组是从0开始的。将其更改为小于,否则最后一个元素将打印未定义。

while (arraycounter < AmericanCars.length) {
    ...
}

此外,您可以这样做:

document.getElementById('content').innerHTML = AmericanCars.join('&nbsp');

答案 1 :(得分:1)

我认为for循环在这种情况下更为标准,也会构建您的内容,然后将其分配给innerHTML。数组索引从0而不是1开始,因此您应该使用<而不是<=',否则您将在循环结束时关闭。< / p>

function ListAmericanCars() {
    var content = '';
    for (var i = 0; i < AmericanCars.length; i++) {
        content += AmericanCars[i] + "&nbsp ";
    }
    document.getElementById('content').innerHTML = content;
}

答案 2 :(得分:0)

这是一个坏主意。当您使用innerHTML放置数据时,浏览器会将其呈现。

更好的解决方案是创建变量并附加数据:^

var AmericanCars=["Chevy", "Ford", "Dodge"];
var JapaneseCars=["Honda", "Toyota", "Subaru"];
var FavoriteCars=[];

function ListAmericanCars()  {
    var arraycounter = 0; /* Use array counter to set the value that is displayed in innerHTML's square [] brackets */
    var myContent = '';

    while (arraycounter < AmericanCars.length) {
        myContent += AmericanCars[arraycounter] + "&nbsp ";
        arraycounter++;
    }

    document.getElementById('content').innerHTML = myContent;
}

编辑: 啊忘了。不要在while循环中使用&lt; = 。这不是一个有效的索引。