2015-06-23 3 views
-1

Я строю сайт, который использует следующий код:Javascript: Uncaught TypeError: не функция

HTML:

<div onclick="linkPopup()"></div> 
<button type="button" id="hidePopup" onclick="hidePopup()">Cancel</button> 

Javascript:

function linkPopup(questionNumber) { 
     document.getElementById('linkPopup').style.display = 'block'; 
     document.getElementById('addLink').setAttribute('onclick', 'addLink(' + questionNumber + ')'); 
    } 

    function hidePopup() { 
     document.getElementById('linkPopup').style.display = 'none'; 
     document.getElementById('overlay').style.display = 'none'; 
    } 

Для по какой-то причине я получаю следующую ошибку в инструментах разработчика Chrome:

Uncaught TypeError: hidePopup is not a function

Каков путь этой проблемы и как я могу предотвратить это в будущем?

+2

Где этот код находится в документе? – Daedalus

+0

В любом случае, потратьте немного времени, чтобы узнать больше об обработке событий: http://www.quirksmode.org/js/introevents.html –

ответ

1

Проблема заключалась в том, что id='hidePopup' противоречил hidePopup(), поскольку они имеют одинаковое имя.

Решение заключалось в том, чтобы изменить идентификатор на нечто иное, чем «hidePopup».

0
id="hidePopup" onclick="hidePopup()" 

Идентификатор элемента совпадает с именем функции.

Чтобы избежать этого:

  1. Избегайте глобалам. (Функции Wrap в выражениях с мгновенной выдержкой (IIFE) или в функциях, которые вы передаете обработчику событий, например load или DOM Ready).
  2. Привяжите обработчики событий к элементам с использованием JavaScript (например, addEventListener() или jQuery's on()) вместо использования атрибутов встроенных событий.
+0

, работая с противоречивыми ценностями http://jsfiddle.net/496n91au/3/, я думаю, что это вопрос о неправильном размещении тега скрипта – bugwheels94

Смежные вопросы