与事件处理程序关联的Javascript中的嵌套匿名函数不起作用吗?

时间:2016-03-31 14:36:02

标签: javascript anonymous-function

如果我使用命名函数,它确实表现良好:

<script type="text/javascript">
   window.onload = function(){
       var img = document.getElementById('im');
        img.onload = fun();

   } 
function fun()
{
  alert("Image loaded");
}          
</script>

<img src="picture.png" id="im"/>

但是,我的问题是,当我尝试使用匿名函数,如下所示)时,为什么它不起作用?

<script type="text/javascript">   
       window.onload = function(){
       var img = document.getElementById('im');
          img.onload = function(){

          alert("Image loaded");
        }
       }            
</script>

<img src="picture.png" id="im"/>

1 个答案:

答案 0 :(得分:0)

在您的第一个示例中,当事件处理程序附加到图像时(在图像加载后)调用fun

在第二个示例中,匿名函数在图像加载后附加到图像上。

要查看所需的行为,请尝试:

<script type="text/javascript">
  window.onload = function(){
    var img = document.getElementById('im');
    img.onload = fun;

    img.src = "picture.png";
  } 

  function fun()
  { 
    alert("Image loaded");
  }          
</script>

<img id="im"/>

<script type="text/javascript">   
   window.onload = function() {
     var img = document.getElementById('im');
     img.onload = function(){
       alert("Image loaded");
     }

     img.src="picture.png" 
   }            
</script>

<img id="im"/>

<script type="text/javascript">
  function fun()
  { 
    alert("Image loaded");
  }          
</script>

<img id="im" src="picture.png" onload="javascript:fun();"/>