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