我有这个HTML ...
<a onclick="search.analysisSelect('2');" href="javascript:void(0);">A Product</a>
...每当我在浏览器(IE,FF和Chrome)中点击该链接时,它都会失败。它告诉我该功能不存在。但是,如果我在firebug的控制台中输入那个确切的函数调用,它运行正常。所以这个功能确实存在。
确切的错误消息:“search.analysisSelect不是函数”
我最近将“搜索”对象名称更改为“searchTab”,并且onclick工作正常。
为什么搜索对象的onclick失败?我很困惑......
这是搜索对象。这存储在页面加载时加载的单独js文件中。
var search = {
analysisSelect: function(pub) {
$("#tabs").tabs("select", "#analysis");
analysisGrid.refreshSlickGrid(pub, '0', '1', '0');
}
};
哦,我忘了提到我在搜索对象中定义了一个init()函数,在另一个html元素的onclick事件上调用它,并且没有任何问题。 WTF ...
答案 0 :(得分:1)
您在哪里定义search.analysisSelect()
?它应该在锚标记之前定义。
一般使用内联javascripts不是一个好主意,考虑使用外部javascript文件并将该函数绑定到锚onclick
事件,如下所示:
window.onload = function() { // ensures that the document is loaded before finding the anchor element
// assign an Id to the anchor tag like this: <a id="idOfAnchorTag" href="#">A Product</a>
var elem = getElementById('idOfAnchorTag');
elem.onclick = function() {
search.analysisSelect('2');
}
}
答案 1 :(得分:1)
在内联事件处理程序中有一些奇怪的javascript voodoo。 search
未解决window.search
,它正在点击其他内容而我不知道它是什么。
但是,我可以告诉你如何解决它。请改用window.search
。
<a onclick="window.search.analysisSelect('2');" href="javascript:void(0);">A Product</a>
答案 2 :(得分:0)
我今天刚遇到这个问题。事实证明,您不能拥有ID与函数相同的HTML元素。
不要问我为什么,我只是说它与非常懒的解析有关。
我的例子:
<dd style="margin-left: 2px;"><input type="button" name="info[add_benefit]" id="add_benefit" value="{L_ADD_BENEFIT}" class="button2"
style="width: 100%;" onclick="add_benefit();" /> </dd>
onclick方法会返回一个错误,指出该函数不存在。显然它认为按钮本身就是功能,但按钮是一个按钮,因此错误。