Вызов двух функций при загрузке не работает

0

Я думаю, что я делаю какую-то глупую ошибку, но почему-то, когда я вызываю две функции 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 ответа

3
Лучший ответ

Это связано с тем, что у вас есть функция 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');
}
3

setImageSize() объявляется в greetByName(), поэтому он не существует до greetByName(), не говоря уже о доступности.

Объявите его вне greetByName().

  • 0
    Оу! Виноват. Большое спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню