【问题标题】:my code only prints the last value of the array我的代码只打印数组的最后一个值
【发布时间】:2015-06-23 19:31:26
【问题描述】:

我创建了一个变量并使用 push 属性添加了新值,但是当 for 循环一个接一个地调用它时,它只打印最后一个值(名称),即“Pranav”。你能帮我知道如何修复它并一一打印所有值吗?

function tryme() {
    var names = new Array();
    names.push("Bhavesh", "Ajay", "Rahul", "Vinod", "Bobby", "Pranav");
    var tryit = document.getElementById("tryit");
    for (i = 0; i < names.length; i++) {
        tryit.innerHTML = "The values are " + names[i] + " . <br>"
    };
};

【问题讨论】:

  • 您每次都在 for 循环中替换整个 HTML。尝试附加它。

标签: javascript function for-loop push


【解决方案1】:

当用于字符串时,+ 运算符称为concatenation 运算符。 += 因此,将意味着附加上一个值。

function tryme() {
var names = new Array();
names.push("Bhavesh","Ajay","Rahul","Vinod","Bobby","Pranav");
var tryit = document.getElementById("tryit");
tryit.innerHTML += "The values are<br>";
for (i=0;i<names.length;i++) {
   tryit.innerHTML += names[i] + "<br>"
};
}; 
tryme();

FIDDLE

【讨论】:

    【解决方案2】:

    问题在于,在这一行中,您将 innerHTML 设置为一个名称,因此每次都会被覆盖:

    tryit.innerHTML = "The values are " + names[i] + " . <br>"
    

    尝试将其更改为追加,或类似的东西:

    tryit.innerHTML += "The values are " + names[i] + " . <br>"
    

    【讨论】:

    • '+=' 是 'tryit.innerHTML = tryit.innerHTML + "The values are " + names[i] + " .
      " 的缩写。因此,无论 'tryit.innerHTML' 的当前值是什么,新值都会附加到它或添加到它而不是替换它。
    【解决方案3】:

    您每次通过循环替换innerHTML 属性的值。您可能的意思是追加而不是替换。所以...

    改变这个:

    tryit.innerHTML = "The values are " + names[i] + " . <br>"
    

    到这里:

    tryit.innerHTML += "The values are " + names[i] + " . <br>"
    

    【讨论】:

    • 所以 += 将完成每次通过循环附加名称的工作?
    • @BhaveshParvatkar 这正是它的工作原理。相当于tryit.innerHTML = tryit.innerHTML + "The values are " + names[i] + " . &lt;br&gt;";
    猜你喜欢
    • 2017-12-27
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    • 2019-02-26
    相关资源
    最近更新 更多