提醒消息onfocus

时间:2012-07-04 07:39:54

标签: javascript

我不明白。为什么这会在页面加载时发出警报?如何让它仅提醒“onfocus”?

<input id="mail" name="E-post" value="E-post">
<script>
window.onload = function () {
    function onfocusFunction() {
        alert('Why!?');
    }
    var myMail = document.getElementById('mail');
    myMail.onfocus = onfocusFunction();
}
</script>

2 个答案:

答案 0 :(得分:2)

使用括号(),您正在调用onfocusFunction函数并将undefined分配给myMail.onfocus

myMail.onfocus = undefined;

因为onfocusFunction函数没有返回任何内容。

如果没有括号,您将拥有onfocusFunction个对象,该对象应分配给.onfocus

myMail.onfocus = onfocusFunction;  //No parenthesis before ';'

更新:如果您想传递参数,请尝试这样:

function onfocusFunction(param1,param2) {
    return function(){
       alert(param1+":"+param2);
    };
}
var myMail = document.getElementById('mail');
myMail.onfocus = onfocusFunction("value1","value2");

然后,当onfocus事件被触发时,您会看到"value1:value2"作为提醒。

答案 1 :(得分:0)

输入myMail.onfocus = onfocusFunction();时输入

  1. 您正在呼叫onfocusFunction()
  2. 将其返回值分配给myMail.onfocus
  3. (在这种情况下,返回值为null);

    让我们说:

     function onfocusFunction() {
            alert('Why!?');
    return "ok";
        }
    

    所以myMail.onfocus将是字符串'ok'而不是函数

    您可以使用工程师解决方案

    或尝试:

    myMail.onfocus = function(){alert("why")};