我不明白。为什么这会在页面加载时发出警报?如何让它仅提醒“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>
答案 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();
时输入
onfocusFunction()
和myMail.onfocus
(在这种情况下,返回值为null);
让我们说:
function onfocusFunction() {
alert('Why!?');
return "ok";
}
所以myMail.onfocus
将是字符串'ok'而不是函数
您可以使用工程师解决方案
或尝试:
myMail.onfocus = function(){alert("why")};