2016-03-31 13 views
0

如果我使用一个命名函数相反,它确实做的很好:与事件处理程序关联的Javascript中的嵌套匿名函数不起作用吗?

<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"/> 
+4

'乐趣==乐趣()' – elclanrs

+2

使其'IMG! onload = fun;' – gurvinder372

+0

'img.onload = fun();',你必须指定一个处理程序,而不是自己调用它 – Ramanlfc

回答

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();"/> 
+0

不,我不会推荐最后一个例子。我试图说明事件处理程序必须在图像加载之前进行绑定。 – paul

相关问题