比较 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的主要内容,如果未能解决你的问题,请参考以下文章

javascript整理——DOM

切换所有窗体复选框

stringbyevalatingjavascriptstring 从下拉列表中

JavaScript使用button提交表单

DOM的小疑问收集

Javascript innerHTML.indexOf()CSS控件