为什么这个JS循环重写整个页面

时间:2015-10-06 04:14:41

标签: javascript html loops

我有这个网页有一个循环来写出一堆列表元素。 在加载时,for循环运行56次,并使用CSS样式和所有。

但是,我有一个输入按钮来运行运行loops()代码块的do函数,这基本上会重新加载带有新列表的页面,而我的其他html都不会出现。

如何制作一个loops()来添加我的列表元素并增加列表而不是重新加载整个文档?

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
 <link rel="stylesheet" href="jscss.css">
 <script src="js.js"></script>
</head>
<body>
  <script>
  function loops(){
    var i= 0;
 do{
   document.write("<li id='list'>"+i+"</li>");
    i++;
  }while(i < 100);
  }
  document.write("Hello World");
  document.write("<br>");
  document.write("<input id='string' type='text'>");
  document.write("<input onClick='loops()' type='button'  value='Submit'>");
 document.write("<ul id='list'>");
 for (i = 0; i <= 56; i++) {
    document.write("<li>"+i+"</li>");
};
document.write("</ul>");
    </script>

2 个答案:

答案 0 :(得分:1)

因为在加载文档后调用document.write将清除文档。

  

注意:当document.write写入文档流时,调用   关闭(加载)文档上的document.write会自动调用   document.open将清除文档。

因此,当您单击该按钮时,文档已经加载,因此它已被清除。

您可以使用appendChild()或将新内容添加到父元素的innerHTML

&#13;
&#13;
function loops() {
  var i = 0,
    lst = document.getElementById('list'),
    html = '';
  do {
    html += "<li>" + i + "</li>";
  } while (++i < 100);
  lst.innerHTML += html;
}
document.write("Hello World");
document.write("<br>");
document.write("<input id='string' type='text'>");
document.write("<input onClick='loops()' type='button'  value='Submit'>");
document.write("<ul id='list'>");
for (i = 0; i <= 56; i++) {
  document.write("<li>" + i + "</li>");
};
document.write("</ul>");
&#13;
&#13;
&#13;

答案 1 :(得分:0)

因为您使用document.write()所以请勿使用document.write()。 Google innerHTML