for循环中的变量

时间:2016-04-07 16:13:51

标签: javascript variables for-loop



var cars = ["BMW", "Volvo", "Saab", "Ford"];
var text = "33";
var i;
for (i = 0; i < cars.length; i++) {
text += cars[i] + "<br>";
}

document.getElementById("demo").innerHTML = text;
&#13;
<p id="demo"></p>
&#13;
&#13;
&#13;

嗨,我希望更好地理解JavaScript,并且我对for循环中的这个变量感到困惑。为什么结果不会在集合中的每个结果中添加文本的值?

33bmw
Volvo
Saab
Ford

为什么不是这个..

33bmw
33Volvo
33Saab
33Ford

6 个答案:

答案 0 :(得分:2)

这是因为您将每个cars项添加到text。在第一次迭代后,text不再只是33。它的33BMW

您需要的是:

var cars = ["BMW", "Volvo", "Saab", "Ford"];
var text = "33";
var result = "";  // add a special variable to store both `text` and `car` name
var i;
for (i = 0; i < cars.length; i++) {
    result += text + cars[i] + "<br>";  // use it here
}

document.getElementById("demo").innerHTML = result;   // and here

答案 1 :(得分:1)

您正在将文本初始化为“33”。然后对于每辆车,您将汽车的名称(car [i])和br添加到文本中。你想要的是将文本初始化为“”。然后为每辆车添加“33”。

var cars = ["BMW", "Volvo", "Saab", "Ford"];
var text = "";
var i;
for (i = 0; i < cars.length; i++) {
    text += "33" + cars[i] + "<br>";
}

document.getElementById("demo").innerHTML = text;

答案 2 :(得分:1)

在代码中的评论中回答

&#13;
&#13;
//array of strings
var cars = ["BMW", "Volvo", "Saab", "Ford"];
// sets the variable text to "33"
var text = "33";
var i;
// loops through the strings in cars variable
for (i = 0; i < cars.length; i++) {
    // adds car string + <br> to text
    // first pass is 33BMW<br>
    // second pass is 33BMW<br>Volvo<br> 
    // third pass is 33BMW<br>Volvo<br>Saab<br>
    // fourth pass is 33BMW<br>Volvo<br>Saab<br>Ford<br>
    text += cars[i] + "<br>";
}

// writes the text to an html element
document.getElementById("demo").innerHTML = text;
&#13;
<p id="demo"></p>
&#13;
&#13;
&#13;

<强>解决方案 创建一个33的前缀,然后将其附加到循环中,使其位于每一行

&#13;
&#13;
//array of strings
var cars = ["BMW", "Volvo", "Saab", "Ford"];
var text = "";
var prefix = "33";
var i;
// loops through the strings in cars variable
for (i = 0; i < cars.length; i++) {
    text += prefix + cars[i] + "<br>";
}

// writes the text to an html element
document.getElementById("demo").innerHTML = text;
&#13;
<p id="demo"></p>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

这会给你想要的结果:

var cars = ["BMW", "Volvo", "Saab", "Ford"];
var prefix = "33";
var text = "";
var i;
for (i = 0; i < cars.length; i++) {
text += prefix  + cars[i] + "<br>";
}

答案 4 :(得分:0)

var cars = ["BMW", "Volvo", "Saab", "Ford"];
var text = "33";
var output;
var i;
for (i = 0; i < cars.length; i++) {
output += (text + cars[i]) + "<br>";
}

应该是你的代码。 text = text + cars [0]创建33BMW。下一次迭代将沃尔沃加到33BMW而不是33VMW到33BMW。

答案 5 :(得分:0)

你必须在汽车的每个值中连接文本。

Answer jsfiddle

新脚本

var cars = ["BMW", "Volvo", "Saab", "Ford"];
var text = "33";
var out_text = '';

out_text = cars.map(function(i){
    return text + i;
}).join( "<br/>");
document.getElementById("demo").innerHTML = out_text;

您的脚本:

var cars = ["BMW", "Volvo", "Saab", "Ford"];
var text = "33";
var i; 
var out_text = '';
for (i = 0; i < cars.length; i++) {
    out_text = text + cars[i] + "<br>";
}

<强>输出:

  

33BMW
  33Volvo
  33Saab
  33Ford

document.getElementById("demo").innerHTML = out_text;
相关问题