我是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] + "  ";
arraycounter++;
}
}
</script>
<p> What Are Your Favorite American Cars? Answer:
<span id="content">______________
</span>
</p>
<button onclick="ListAmericanCars()">
American Cars Function
</button>
</body>
</html>
答案 0 :(得分:3)
数组是从0开始的。将其更改为小于,否则最后一个元素将打印未定义。
while (arraycounter < AmericanCars.length) {
...
}
此外,您可以这样做:
document.getElementById('content').innerHTML = AmericanCars.join(' ');
答案 1 :(得分:1)
我认为for
循环在这种情况下更为标准,也会构建您的内容,然后将其分配给innerHTML
。数组索引从0
而不是1
开始,因此您应该使用<
而不是<=
',否则您将在循环结束时关闭。< / p>
function ListAmericanCars() {
var content = '';
for (var i = 0; i < AmericanCars.length; i++) {
content += AmericanCars[i] + "  ";
}
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] + "  ";
arraycounter++;
}
document.getElementById('content').innerHTML = myContent;
}
编辑: 啊忘了。不要在while循环中使用&lt; = 。这不是一个有效的索引。