2013-11-27 82 views
0

我想我在做一些愚蠢的錯誤,但不知何故,當我在onload上調用兩個函數時,我沒有得到預期的結果。讓我顯示代碼 -在onload上調用兩個函數不起作用

<!DOCTYPE html> 
<html> 
<head> 
<script type="text/javascript"> 
function greetUser() { 
    alert('Hello users!'); 
} 
function greetByName() { 
    var name=''; 
    var name=prompt('Please enter your name',''); 
    if(name) 
    { 
    alert('Nice to meet you '+name); 
    document.getElementById('rockImg').src='iRock_smile.png'; 
    setTimeout("document.getElementById('rockImg').src='iRock_normal.png';",5000); 
    } 

function setImageSize() { 
    alert('hello'); 
    } 
} 

</script> 
</head> 
<body onload="setImageSize();greetUser();"> 
<img src="iRock_normal.png" id="rockImg" alt="iRock" onclick="greetByName();" /> 
</body> 
</html> 

我甚至沒有收到任何警報。如果我刪除setImageSize(),代碼工作正常。所以我認爲可能會有一些愚蠢的錯誤。請幫幫我。

回答

3

這是因爲您已在greetByName中定義了setImage函數,因此它在全局範圍內找不到它,因爲它在greetByName()的範圍內定義,請將其移到外面。

你也可以讓它不那麼突兀從HTML中刪除並使用window.onload

window.onload = function(){ 

    greetUser(); 
    setImageSize(); 
} 

function greetUser() { 
    alert('Hello users!'); 
} 

function greetByName() { 
    var name = ''; 
    var name = prompt('Please enter your name', ''); 
    if (name) { 
     alert('Nice to meet you ' + name); 
     document.getElementById('rockImg').src = 'iRock_smile.png'; 
     setTimeout("document.getElementById('rockImg').src='iRock_normal.png';", 5000); 
    } 
} 

function setImageSize() { 
    alert('hello'); 
} 
3

setImageSize()greetByName()正在申報,因此它不存在,直到greetByName()叫,更不用說是訪問。

聲明它在greetByName()以外。

+0

哦!我的錯。非常感謝。 – Kartic