【问题标题】:A javascript function triggered by onblur gives an alert, but doesn't change innerHTML of an element由 onblur 触发的 javascript 函数会发出警报,但不会更改元素的 innerHTML
【发布时间】:2012-03-26 20:56:08
【问题描述】:

我编写了一个函数,当用户尝试提交无效的电子邮件地址时,它将 ID 为“mail_not_valid”的 span 的 innerHTML 设置为“看起来不正确”。工作正常。另一个函数清除输入字段并由 onfocus 触发。第三个函数由 onblur 触发,并在用户未输入任何内容时将输入字段重置为其原始值。现在问题来了:如果用户点击该字段(->cleared),输入了一个无效的电子邮件(->span 显示)然后只是删除他的条目并离开表单,span 仍然存在。

现在当我替换 document.getElementById("mail_not_valid").innerHTML = "";有了警报,警报就会出现。但是,更改 innerHTML 不起作用。

编辑:我是个白痴,如果用户已经写了一些东西,它就无法工作:if (!(feld.value))

<input onblur="OnBlurCondition (this, 'subscribe to the e-mail newsletter')">

<script language="javascript">
function OnBlurCondition (feld, inhalt) {
        if (!(feld.value)){
                feld.value = inhalt;
                if (document.getElementById("mail_not_valid").innerHTML == "that doesn't seem right."){
                    document.getElementById("mail_not_valid").innerHTML = "";
                }   
        }
}
</script>

【问题讨论】:

  • 不确定这是否只是一个错字,但在您的示例中,您使用的是比较运算符 (==) 而不是赋值运算符 (=)。
  • HTML 中是否真的包含一个 id 为 mail_not_valid 的元素?控制台有错误吗?
  • 您是否尝试过提醒或使用 console.log( document.getElementById("mail_not_valid").innerHTML 以确保它等于您的比较结果?在这种情况下,如果您有空格/换行符等它会抛出比较,除非它们完全匹配。
  • 啊,是的,斯科特明白了,哈哈,很好,我不知道我是怎么错过的:P 他是对的。在该行将 == 更改为 =,它可能会起作用,哈哈

标签: javascript innerhtml onblur


【解决方案1】:

你有一个错字。应该是这样的:

if (document.getElementById("mail_not_valid").innerHTML == "that doesn't seem right."){
    document.getElementById("mail_not_valid").innerHTML = "";
}

注意单个等号。

另外,请勿复制/粘贴代码。使用体面的编辑器/IDE。复制/粘贴是邪恶的! :)

【讨论】:

  • 我已经 +1,但如果可以的话,我会再给一个复制/粘贴评论!
【解决方案2】:

innerHTML == "" 更改为innerHTML = ""

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    相关资源
    最近更新 更多