Показать сообщение отдельно
  #1 (permalink)  
Старый 22.10.2014, 15:12
Аспирант
Отправить личное сообщение для tourniquet Посмотреть профиль Найти все сообщения от tourniquet
 
Регистрация: 04.04.2014
Сообщений: 58

Так как же работает onload?
День добрый! В каком-то смысле, я разобрался, но не до конца. Проблема в том что есть скрипт, который работает по разному если ставить его в head или в конце, на ряд выше закрывающего тега body. Но почему это происходит по разному если и там и там я использую window.onload? Читаю про это, и вижу: "Обработчик window.onload срабатывает, когда загружается вся страница, включая ресурсы на ней — стили, картинки, ифреймы и т.п.", значит, как я понимаю, скрипт должен заработать только после того как страничка уже загружена полностью, но не тут то было! Привожу пример:

JS код:

window.onload = touchRock();

function touchRock() {
	var userName = prompt("What is your name?", "Insert your name.");

	if (userName) {
		alert("Glad to see you, " + userName);
		document.getElementById('rockImg').src = 'img/rock_happy.gif';
	}
}


и рабочий вариант:

<!doctype html>
<html>
	<head>
		<title>iRock - Виртуальный любимец Rock</title>
		<meta charset="utf-8">
		<link rel="stylesheet" type="text/css" media="screen" href="style.css">

	</head>
	<body>
		<div class="rock">
			<img id="rockImg" src="img/rock.gif" alt="iRock" style="cursor:pointer" />
		</div>
		<script src="js/someAlert.js"></script>
	</body>
</html>


а вот и вариант который выдаёт мне ошибку "Cannot set property 'src' of null":

<!doctype html>
<html>
	<head>
		<title>iRock - Виртуальный любимец Rock</title>
		<meta charset="utf-8">
		<link rel="stylesheet" type="text/css" media="screen" href="style.css">
		<script src="js/someAlert.js"></script>
	</head>
	<body>
		<div class="rock">
			<img id="rockImg" src="img/rock.gif" alt="iRock" style="cursor:pointer" />
		</div>
	</body>
</html>


Хорошо, ошибка есть, но, тогда интересный вопрос, почему с prompt и alert-ом всё нормально?
Ответить с цитированием