为什么我的代码有时会返回undefined

时间:2017-12-27 03:13:28

标签: javascript html innerhtml getelementbyid

我试图显示两个不同的数字,但每次结果都是相同的,有时显示未定义。有什么方法可以解决这个问题吗?



var usedCard = [0];
var columnB = Math.floor(Math.random()*16);
function columnBB(){
	if (usedCard.includes(columnB)){
		columnB = Math.floor(Math.random()*16);
		columnBB();
	}
	else {return columnB};
}
document.getElementById("B1").innerHTML = columnBB();
usedCard.push(columnB);
columnB = Math.floor(Math.random()*16)
document.getElementById("B2").innerHTML = columnBB();

<!DOCTYPE html>
<html>
<body>
<table>
<tr>
<td id="B1"></td>
<td id="B2"></td>
</tr>
</table>
</body>
</html>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

您正在使用递归。当函数调用自身时,它永远不会返回,因为如果永远不调用if分支,它只会调用else分支。删除其他人只需返回,你应该很好。

var usedCard = [0];
var columnB = Math.floor(Math.random()*16);
function columnBB(){
	if (usedCard.includes(columnB)){
		columnB = Math.floor(Math.random()*16);
		columnBB();
	}
	return columnB;
}
document.getElementById("B1").innerHTML = columnBB();
usedCard.push(columnB);
columnB = Math.floor(Math.random()*16)
document.getElementById("B2").innerHTML = columnBB();
<!DOCTYPE html>
<html>
<body>
<table>
<tr>
<td id="B1"></td>
<td id="B2"></td>
</tr>
</table>
</body>
</html>