比较 document.getElementsByClassName().innerHTML 和 int
Posted
技术标签:
【中文标题】比较 document.getElementsByClassName().innerHTML 和 int【英文标题】:Compare document.getElementsByClassName().innerHTML with int 【发布时间】: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)
吗?
“页面无法加载”。我非常怀疑这段代码会阻止页面加载。请说明如何调用该函数。请同时打开您的开发者工具控制台并报告您看到的任何错误。
我在主帖中更新了更多信息。
【参考方案1】:
如果您在使用 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
【讨论】:
试过了。它没有帮助。我在上面添加了更多代码。以上是关于比较 document.getElementsByClassName().innerHTML 和 int的主要内容,如果未能解决你的问题,请参考以下文章