繁体   English   中英

如何使用for循环在JavaScript中显示多次

[英]How to display more than one time in JavaScript using for loop

我在W3学校学习JS,遇到了这个检查属性长度的程序。 后来我修改了它以显示元素具有的属性的名称。 这是代码

 function myFunction() { for (var counter = 0; counter < 2; counter++) var a = document.getElementById("myBtn").attributes[counter].name; document.getElementById("output").innerHTML = a; } 
 <html> <body> <p>Click the button to see how many attributes the button element have.</p> <p id="output"> </p> <button id="myBtn" onclick="myFunction()">Try it</button> </body> </html> 

我希望O / P为:

id onclick

但是由于某种原因,它仅显示元素拥有的最后一个属性,在这种情况下,如果元素是或其他内容,则它会显示其onclick

是什么原因呢?

您的代码中有一个非常简单的错误。 您的代码将首先将<p>元素的innerHTML设置为“ id”。 然后,它将使用下一个属性(即“ onclick”)覆盖它。 要解决此问题,请更改

document.getElementById('output').innerHTML = a

document.getElementById('output').innerHTML += a + "<br>"

<br>只是将属性彼此分开。 这是整个代码段:

 function myFunction() { for (var counter = 0; counter < 2; counter++) { var a = document.getElementById("myBtn").attributes[counter].name; document.getElementById("output").innerHTML += a + "<br>"; } } 
 <html> <body> <p>Click the button to see how many attributes the button element have.</p> <p id="output"> </p> <button id="myBtn" onclick="myFunction()">Try it</button> </body> </html> 

尝试以下

function myFunction() {
var a="";
  for (var counter = 0; counter < 2; counter++){
     a+= document.getElementById("myBtn").attributes[counter].name;
}
  document.getElementById("output").innerHTML = a;
}

您的代码显示最后一个设置为a的值。 并且您没有将属性名称追加/添加到,而是使用覆盖了

var a = ....

目前,您需要a每次循环运行时重新分配avar a = ... ):

function myFunction() {
  for (var counter = 0; counter < 2; counter++) {
    var a = document.getElementById("myBtn").attributes[counter].name;
  }
  document.getElementById("output").innerHTML = a;
}

这意味着a最终是最后一个项目。

也许改为将每个属性添加到数组中:

function myFunction() {
  var arr = [];
  for (var counter = 0; counter < 2; counter++) {
    arr.push(document.getElementById("myBtn").attributes[counter].name);
  }
  document.getElementById("output").innerHTML = arr.join(' ');
}

另外,在您的示波器所在的位置使用花括号。 你想要的output是在循环之后

发生这种情况是因为您更改了元素的innerHTML,这意味着您更改了该元素的整个HTML。

要执行所需的操作,可以将结果连接到当前的innerHTML上,或创建元素并在其中添加值,然后将其附加到文档中。

例如:

var output = document.getElementById('output');
output.innerHTML = output.innerHTML + ' - ' + a;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM