0

理解できません。ページの読み込み時にこのアラートが表示されるのはなぜですか? 「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>
4

2 に答える 2

2

With parenthesis (), you are calling onfocusFunction function and assigning undefined to myMail.onfocus:

myMail.onfocus = undefined;

as your onfocusFunction function does not return anything.

Without parenthesis, you will have onfocusFunction object, which should be assigned to .onfocus:

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

UPDATE: If you want to pass parameters either, then try like this:

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

Then when onfocus event will be triggered you will see "value1:value2" as an alert.

于 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 に答える