Javascript setInterval不起作用

时间:2016-10-18 20:49:00

标签: javascript

我的代码必须是带有随机符号的树。我把setInterval每隔一秒更改一次,但没有任何反应,我也没有任何错误。 有人请告诉我我犯了什么错误,或者更多:)。



window.onload = intervalSetup;
function intervalSetup() {
	'use strict';
	setInterval(function() {
		theTree();
	}, 1000);
}

function theTree() {
	'use strict';
	var x = 8;
	for (var i=0; i<x; i++) {
		for (var j=x-1; j>i; j--) {
			document.write("&nbsp;&nbsp;");
		}
		for (var k=0; k<=(i*2); k++) {
			document.write(arraySigns[Math.floor(Math.random() * arraySigns.length)]);
		}
		document.write("<br>")
	}
	for (var i=0; i<2; i++) {
		for (var j=0; j<(x*2)-3; j++) {
			document.write("&nbsp;");
		}
		document.write("**<br>");
	}
}
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:2)

我在Google Chrome上测试了代码,但它运行正常。

undefined中只有arraySigns错误。

Image generate tree

答案 1 :(得分:2)

脚本已通过写入文档删除了自己。这就是原因,这个功能从未被调用过两次。

有趣的错误,我想。 : - )

答案 2 :(得分:1)

第一个问题是未定义的数组,它已在编辑中修复。

剩下的问题是树木被无休止地写在页面上,很难看到符号的变化。

通过在每个新树之前清除的容器div中生成树,您可以很容易地看到符号每次都是正确随机的。

该代码段有一个工作示例,它通过添加到treeDiv的innerHTML来运行。 (为了便于阅读,我拿出了文件片段)

'use strict';
window.onload = intervalSetup;
var arraySigns;
var treeDiv;

function intervalSetup() {  
  arraySigns = ["*", "^", "&", "#"];
  treeDiv = document.getElementById("theTreeDiv");
  setInterval(theTree, 1000);
}

function theTree() {
  treeDiv.innerHTML = '';
  var x = 8;
  
  for (var i=0; i<x; i++) {
    
    for (var j=x-1; j>i; j--) {           
      treeDiv.innerHTML += "&nbsp;&nbsp;";
    }
    
    for (var k=0; k<=(i*2); k++) {      
      treeDiv.innerHTML += arraySigns[Math.floor(Math.random() * arraySigns.length)];
    }
    treeDiv.innerHTML += "<br>";  
  }
  
  for (var i=0; i<2; i++) {
    
    for (var j=0; j<(x*2)-3; j++) {
      treeDiv.innerHTML += "&nbsp;";
    }   
    treeDiv.innerHTML += "**<br>";
  }
}
<div id="theTreeDiv">
  
</div>