【发布时间】:2021-05-27 01:25:18
【问题描述】:
function randomNumber(){
var value;
var flag = false;
var tds = document.querySelectorAll('td');
do{
value = Math.round(Math.random() * (26 - 1) + 1);
for(var t = 0; t < tds.length; t++){
if(tds[t].innerHTML == value)
flag = true;
}
if(!flag){
return value;
}
}while(flag == true)
}
此函数返回一个随机数,用于新 td 的 innerHTML。如果存在与此代码生成的编号相同的其他 td,则循环再次开始。如果生成的数字是唯一的,我将其添加到新 td 的 innerHTML 中。但是我什至无法加载页面,因为我遇到了无限循环,但无论我多么努力,我都没有注意到这段代码的逻辑问题。
【问题讨论】:
-
flag设置为false的条件是什么? -
问:为什么我的页面会陷入死循环? A:可能是因为“value”显然总是等于“tds[t].innerHTML”,并且flag 永远不会保持“false”。建议:在调试器(例如 Chrome 开发者工具)中单步调试代码,并在遍历循环时查看“值”。
标签: javascript random html-table infinite-loop innerhtml