0

我不明白。为什么页面加载时会出现此警报?如何使其仅“聚焦”警报?

<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>
4

2 回答 2

2

使用括号(),您正在调用onfocusFunction函数并分配undefinedmyMail.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"警报。

于 2012-07-04T07:40:48.337 回答
0

当你输入myMail.onfocus = onfocusFunction();

  1. 你在onfocusFunction()打电话
  2. 将其返回值分配给myMail.onfocus

(在这种情况下,返回值为 null );

让我们说:

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

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

你可以使用工程师的解决方案

或尝试:

myMail.onfocus = function(){alert("why")};
于 2012-07-04T07:47:31.703 回答