Я не совсем уверен, почему вы получаете эту ошибку, учитывая, что ваша функция определена в <head>
, и вы не пытаетесь использовать ее до onload
тела, но ваш код имеет проблема. Эта часть из вашего onload=""
:
setTimeout(countDown(8),1000);
будет, когда onload
произойдет и код будет запущен, немедленно вызовет функцию countDown()
, передав параметр 8
, а затем возьмет все, что возвращает эта функция, и передаст setTimeout()
будет выполнено за 1 секунду. В вашем случае ваша функция не возвращает определенное значение, поэтому в действительности вы передаете undefined
в setTimeout()
.
То, что вы хотите сделать, это передать setTimeout()
ссылку на функцию или строку.
Вы не можете передать ссылку на countDown()
напрямую одновременно с передачей параметра для этой функции (по крайней мере, не с синтаксисом setTimeout()
, который будет работать в IE), поэтому вам потребуется оберните это в анонимную функцию как это:
onload="setTimeout(function() { countDown(8); }, 1000);"
Или вы можете использовать строковый формат, аналогичный вашему countDown()
телу функции (используя одинарные кавычки, поскольку атрибут onload
в настоящее время использует double):
onload="setTimeout('countDown(8);', 1000)"
Обратите внимание, что формат строки обычно не одобряется, потому что он медленнее и влияет на область действия.