ArBitr_exe
@ArBitr_exe
Начинающий Web-разработчик

Почему не работает событие js кода?

На html странице есть иконка(работает как кнопка), при нажатии на нее, должна вылетать форма авторизации, но выдает сообщение: Uncaught ReferenceError: avtorization(это функция) is not defined at HTMLInputElement.onclick. Я все перепробовал, но эта ошибка как появлялась, так и появляется, в чем проблема?
п.с. извиняюсь за говнокод....

Сама кнопка:
<input type="image" src="img/house.png" alt="" onclick="avtorization()">

Окно:
<div class="black_bg" name="avtoriz">
   <div class='avtoriz linkChange'>
    <p>Авторизация</p>
     <form action="index.php" method="Post"> 
      <input name="login" type="text" placeholder="Login..."><br>
      <input name="passw" type="password" placeholder="Password..."><br>
      <a href="reg.html">Регистрация</a><br>
      <input type="submit" src="../img/voit.png" name="voity" value="Войти">
     </form>
   </div>
  </div>

Функция события:
setTimeout(function avtorization() {
	var avt = document.getElementsByName('avtoriz');
	if (avt.style.display != "block") { 
        avt.style.display = "block";
    }
    else avt.style.display = "none";
},1000);

Стили:
.black_bg{
    display: none;
    background-color: rgba(0,0,0,.8);
    width: 100%;
    height: 100%;
    position:fixed;
    z-index: 99;
    margin: 0;
    top: 0
}
.avtoriz{
    width: 300px;
    height:auto;
    position: fixed;
    border: solid 2px #AEC4CA;
    border-radius: 8px;
    background: #102C3D;
    left: 40%;
    top: 40%;
    z-index: 100;
    text-align: center;
    font-size: 1.2em
}
  • Вопрос задан
  • 1408 просмотров
Решения вопроса 1
lazalu68
@lazalu68
Salmon
setTimeout(function avtorization() {
  var avt = document.getElementsByName('avtoriz');
  if (avt.style.display != "block") { 
        avt.style.display = "block";
    }
    else avt.style.display = "none";
},1000);


Эта конструкция выполняет именованную функцию avtorization минимум через 1000мс после собственного выполнения. Она не объявляет эту функцию в области видимости, про специфику работы function expression/declaration читайте в интернетах. Собственно, по этой причине avtorization is not defined.

К тому же обработчики гораздо удобней устанавливать с помощью element.addEventListener( event_name, handler );
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы