解决方案 »

  1.   

    function test()
            {
                alert("ha ha ,ni mei !");
                return function () { alert(" you shi ni mei a "); };
            }        window.onload = function ()
            {
                document.getElementById("btn").onclick = test();
            }此时当页面加载的时候页面会弹出"ha ha ,ni mei !";
    上面这个页面加载时就执行test(),所以会弹出。。 window.onload = function ()
            {
                document.getElementById("btn").onclick =function()
                 {
                   alert("ha ha ,ni mei !");
                return function () { alert(" you shi ni mei a "); };
                   } ;
            }
    这个页面加载时会给id为btn的元素(比如button)绑定点击事件,只有在点击btn时才会弹出ha ha ,ni mei !
      

  2.   

    document.getElementById("btn").onclick = test();口頭解釋一下
    這句意思是,讓id=btn 的dom 屬性 onclike 指定為 test 執行後的值
    test 是函數對像,加上() 代表執行,
    因為沒有執行的話就沒有值可以指定給onclick
    test() 因為沒有回傳任何值 所以實際上等於
    document.getElementById("btn").onclick = undefined;
    這樣是不會有點擊的效果onclick 必須要指定為函數對像
    也就是test 後面的 ()  請拿掉
    document.getElementById("btn").onclick = test;
    這樣就可以
      

  3.   

    我看的书上说的是 btn.onclick=test();
    和btn.onclick=function()
    {
       里面的内容和test()里面的一样
    }这两种方法是一样吗?
      

  4.   


    这个不是我的那个问题,就是onclick后面的函数跟了()的话,就是执行一遍这个函数,把返回值赋值给onclick,但是如果用function(){}这种方式的话就不会执行一遍这个匿名函数,这是为什么
      

  5.   

    =test();
    这个得到的是test函数的返回值
    =function(){}
    这儿得到的是一个函数引用
    你可以写=test,但不应该写=test()
    建议补基础,不只是js的,函数()表示执行函数并获得返回值,这算各语言的通用规则了
      

  6.   

    这个不是我的那个问题,就是onclick后面的函数跟了()的话,就是执行一遍这个函数,把返回值赋值给onclick,但是如果用function(){}这种方式的话就不会执行一遍这个匿名函数,这是为什么因為document.getElementById("btn").onclick =function() { .........裡面不管是什麼.......}
    function(){} 裡面包什麼你完全不用管,
    你該知道的是這句僅代表 onclick 指定為對 function() { .........裡面不管是什麼.......}  暱名函數的引用
    當你要執行的時候 你可以:
    1.  document.getElementById("btn").click(); 
    2.  (function() { .........裡面不管是什麼.......})();  //後加上 () 表示執行如果你要像test() 一樣用返回值赋值給onclick  那你就加上 () 
    document.getElementById("btn").onclick =function()
    {
        alert("ha ha ,ni mei !");
        return function () { alert(" you shi ni mei a "); };
     }() ;
      

  7.   

            window.onload = function ()
            {
                document.getElementById("btn").onclick = test();
            }test() 得到的是什么呢?他 return 了一个 function()也就是说 window.onload = function () { alert(" you shi ni mei a "); },因为这个是 test 方法执行后返回的数据,但是在执行过程中,alert("ha ha ,ni mei !"); 也被执行了 window.onload = function ()
            {
                document.getElementById("btn").onclick =function()
                 {
                   alert("ha ha ,ni mei !");
                return function () { alert(" you shi ni mei a "); };
                   } ;
            }这个时候, window.onload 是什么呢?就是你完整的匿名函数,当点击按钮,弹处 haha,nimei,并返回一个 function 对象,不过没有什么东西可以接收这个返回的东西而已