在onload上调用两个函数不起作用

时间:2013-11-27 18:53:13

标签: javascript html

我认为我正在做一些愚蠢的错误,但不知何故,当我在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(),代码工作正常。所以我认为可能会有一些愚蠢的错误。请帮帮我。

2 个答案:

答案 0 :(得分: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');
}

答案 1 :(得分:3)

setImageSize()正在greetByName()中声明,因此在调用greetByName()之前它不存在,更不用说可以访问了。

greetByName()之外声明它。