Я думаю, что я делаю какую-то глупую ошибку, но почему-то, когда я вызываю две функции 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(), код работает правильно. Поэтому я думаю, что может быть какая-то глупая ошибка. Пожалуйста, помогите мне.
Это связано с тем, что у вас есть функция setImage, определенная внутри greetByName
поэтому она не может найти ее в глобальной области действия, поскольку она определена в пределах области 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');
}
setImageSize()
объявляется в greetByName()
, поэтому он не существует до greetByName()
, не говоря уже о доступности.
Объявите его вне greetByName()
.