如何解决比较 document.getElementsByClassName().innerHTML 和 int
我有给定的代码:
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?
编辑 根据评论中的要求添加了更多代码。 “页面无法加载”是指页面永远加载。几秒钟后,浏览器(Chrome 最新版本,无插件)要求我离开页面或等待。 在等待状态下它不会让我打开开发者工具。
输出
console.log(document.getElementsByClassName("field")[j + (i * 9)].innerHTML)
给出一个从 1 到 9 的数字作为字符串。这是我所期望的。也许我的问题不是 parseInt() 函数,而是我无法弄清楚的其他问题。
解决方法
如果您在使用 parseInt 函数时遇到问题,您可以将其删除并使用松散的相等比较(==
而不是 ===
)。
function check(random) {
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
if (document.getElementsByClassName("field")[j + (i * 9)].innerHTML == random) {
console.log("Match!")
return false
}
}
}
return true
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。