【问题标题】:textarea mouseup Event only fires oncetextarea mouseup 事件只触发一次
【发布时间】:2015-01-15 22:56:17
【问题描述】:

这应该是一个简单的问题,但我很难找出问题发生的原因。

我有以下代码:

<html>
<Head>

</Head>
<Body>

<textarea id="rrr" rows="5" cols="40" maxlenght="50" onmouseup="myfunction()"></textarea>

<script>

function myfunction(){

document.getElementById("rrr").innerHTML="test";

}


</script>

    </Body>
</html>

此代码只能运行一次!当我加载页面并在 textarea 上执行 mouseup 时,我会看到“test”一词。

然后我删除 textarea 的文本并再次单击它,没有任何反应。为什么?

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    innerHTML 更改为value

    function myfunction() {
        document.getElementById("rrr").value = "test";
    }
    

    jsFiddle example

    还有一个小提示,您在maxlenght 中有一个错字。

    【讨论】:

    • +1,这行得通。但是你知道为什么 innerHTML 只能工作一次吗?我的猜测是浏览器可能会缓存它并阻止它。没有任何意义。
    • 实际上,如果您检查元素并观察 DOM,您会看到每次 mouseup 时 innerHTML 属性都会不断更新,但是您想更改 value 属性。您可以在html.spec.whatwg.org/multipage/forms.html#dom-textarea-value 阅读有关详细信息
    【解决方案2】:

    此代码导致该函数执行一次,即第一次触发 mouseup 事件:

    onmouseup="myfunction()"
    

    另一方面,这段代码将 myfunction 指定为 mouseup 事件的事件处理程序,因此每次触发事件时都会调用它。

    onmouseup="myfunction"
    
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    相关资源
    最近更新 更多