Javascript:未捕获的TypeError:不是函数

时间:2015-06-23 22:33:44

标签: javascript

我正在建立一个使用以下代码的网站:

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的开发者工具中收到以下错误:

  

未捕获的TypeError:hidePopup不是函数

这个问题的路线是什么?我怎样才能防止将来发生这种情况?

2 个答案:

答案 0 :(得分:1)

问题是hidePopup()void wrap_CreateContext(unsigned long windowId) { return CreateContext((void*)&(windowId)); } 冲突,因为它们具有相同的名称。

解决方案是将ID更改为&#39; hidePopup&#39;以外的其他内容。

答案 1 :(得分:0)

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

您的元素ID与函数名称冲突。

为避免这种情况:

  1. 避免使用全局变量。 (将函数包含在立即调用的函数表达式(IIFE)中,或者传递给传递给事件处理程序的函数,如load或DOM Ready)。
  2. 使用JavaScript(例如addEventListener()或jQuery&#39; s on())将您的事件处理程序绑定到元素,而不是使用内部事件属性。