【问题标题】:JS if statement - innerHTMLJS if 语句-innerHTML
【发布时间】:2013-05-28 16:37:28
【问题描述】:
function colorize(){
    for(i = 1; i<=8; i++)
    {
        var id = document.getElementById('op' + i);

        var stat = id.innerHTML;
        document.write(stat + " ");
        if(stat == 1)
        {
            id.innerHTML = "<div style='background:#00FF00; width: 20px; height: 20px; border-radius: 15px;'></div>";
        }
        else{
            id.innerHTML = "<div style='background:#FF0000; width: 20px; height: 20px; border-radius: 15px;'></div>";
        }
    }
}

它应该检查是否有 1 或 0 并将其替换为绿色或红色圆圈,但我只得到红色圆圈。

“stat”打印给了我一个“0 0 0 1 1 1 1 1”,但它似乎不适用于 if 语句。有人知道为什么吗?

【问题讨论】:

  • stat 是一个字符串,1 是一个数字。试试 stat == "1"
  • 试过了,结果还是一样
  • @Thilo,是的,你是对的,它可能是 innerHtml 中的一个空格......
  • 虽然也不是这样......
  • 你能在 if 和 else 分支中添加一个 document.write 并发布结果吗? innerHtml 中是否有单个 1 或 0?

标签: javascript if-statement innerhtml


【解决方案1】:

如果stat.length 始终等于 1:

if(stat[0]=='1'){

如果您正在寻找的只是1 中的stat:

if(stat.match(/1/)){//contains a 1, may contain more

【讨论】:

  • 谢谢!我对 stat.length 进行了打印,它返回 30 ,所以我发现我正在寻找的是 stat[22]
  • @IgorGumush 哦,天哪,看起来那是你的问题。另外,下一次,给我们一些关于op[0-9] div 的信息
  • 虽然在这种特殊情况下它并不重要(那么多),但不应使用match 来检查字符串是否与模式匹配:改用/pattern/.test(string)。或者,如果您只需要检查某个字符串是否包含另一个字符串,请使用someStr.indexOf(anotherStr) !== -1。
【解决方案2】:
function colorize(){
    for(i = 1; i<=8; i++)
    {
        var id = document.getElementById('op' + i);

        var stat = id.innerHTML;
        document.write(stat + " ");
        if(stat == "1")
        {
            id.innerHTML = "<div style='background:#00FF00; width: 20px; height: 20px; border-radius: 15px;'></div>";
        }
        else{
            id.innerHTML = "<div style='background:#FF0000; width: 20px; height: 20px; border-radius: 15px;'></div>";
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-04
    • 2022-01-18
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多