【发布时间】:2021-05-19 12:26:58
【问题描述】:
我有给定的代码:
function fill_random() {
let field = document.getElementsByClassName("field")
let random
for (let i = 0; i < 9; i++) {
for (let j = 0; j < 9; j++) {
random = Math.floor(1 + Math.random() * 9)
if (check(random))
field[j + (i * 9)].innerHTML = `${random}`
else
j--
}
}
}
function check(random) {
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
if (parseInt(document.getElementsByClassName("field")[j + (i * 9)].innerHTML) === random) {
console.log("Match!")
return false
}
}
}
return true
}
random 是一个 let 填充
Math.floor(1 + Math.random() * 9)
当我尝试执行它时,页面不会加载。当我尝试不使用 parseInt() 时,页面和其他一切都可以正常工作,但 if 条件永远不会匹配。 显然是因为我无法将 interHTML 与 int 进行比较。
那么如何正确地将 innerHTML 转换为 int 呢?
编辑 根据 cmets 的要求添加了更多代码。 “页面无法加载”是指页面永远加载。几秒钟后,浏览器(Chrome 最新版本,无插件)要求我离开页面或等待。 在等待的状态下它不会让我打开开发者工具。
输出
console.log(document.getElementsByClassName("field")[j + (i * 9)].innerHTML)
给出一个从 1 到 9 的数字作为字符串。这是我所期望的。也许我的问题不是 parseInt() 函数,而是我想不通的其他问题。
【问题讨论】:
-
请提供minimal reproducible example 来说明问题。您的
parseInt电话看起来基本正常。 -
在
parseInt的情况下,您在页面加载时忽略了一个控制台错误。 -
也许没有这样的元素。你的意思是
(i * 3)吗? -
“页面无法加载”。我非常怀疑这段代码会阻止页面加载。请说明如何调用该函数。请同时打开您的开发者工具控制台并报告您看到的任何错误。
-
我在主帖中更新了更多信息。
标签: javascript if-statement innerhtml parseint getelementsbyclassname