Javascript 元素通过计时器追加子元素

Javascript 元素通过计时器追加子元素,javascript,html,Javascript,Html,我试图每秒钟将新元素p添加到div中,现在我有了类似的东西 <div id="div"> </div> <button id="button" onclick="newfun()"> 1</button> <script type="text/javascript"> function newfun() { var d = new Date(); var t = d.getTime();

我试图每秒钟将新元素p添加到div中,现在我有了类似的东西

<div id="div"> </div> 
<button id="button" onclick="newfun()"> 1</button>
<script type="text/javascript">
    function newfun() {
        var d = new Date();
        var t = d.getTime();
        while(1) {
            d = new Date();
            var c = d.getTime();
            if (c-t>1000) {
                    var para = document.createElement("p");
                    var node = document.createTextNode("new para");
                    para.appendChild(node);
                    var element = document.getElementById("div");
                    element.appendChild(para);
                    //return;
            }
        }
    }
</script>

1.
函数newfun(){
var d=新日期();
var t=d.getTime();
而(1){
d=新日期();
var c=d.getTime();
如果(c-t>1000){
var para=document.createElement(“p”);
var节点=document.createTextNode(“新段落”);
子节点(节点)段;
var元素=document.getElementById(“div”);
要素.附件(第6段);
//返回;
}
}
}

每次我点击按钮,它就挂在那里。我应该如何更改它以使其工作?

您不应该在执行此操作时使用
,因为您正在运行一个无限循环。要每1秒运行一次计时器,请使用
setInterval

var interval;
function newfun() {

  clearInterval(interval); //clear any existing setInterval. clicking on button should not run multiple setIntervals and better clear it

  var element = document.getElementById("div"); //for better performance moved it outside.

  interval = setInterval(function(){
    var para = document.createElement("p");
    var node = document.createTextNode("new para");
    para.appendChild(node);
    element.appendChild(para);
  }, 1000);  // runs for every one seconds
}

使用
setInterval
代替
,因为(1)
不是计时器,而是无限循环。