2013-07-01 137 views
0

我得到一个错误,指出“prepnewissue”没有定义,当我尝试我的代码上传到网站的HTML。基本上这个功能应该是当你点击边栏菜单的时候,你会得到一个可以放在地图上的小光标(红点),但它不会被激活。当我将鼠标悬停在侧边栏上时,它只是说“javascript:prepNewIssue('Repairable')”,另一个也是如此。功能说“它没有定义”


function prepNewIssue(kind) 
    { 
    panner.disable(); 
    $("div[id^='m']").hide(); 
    $('#plan-wrapper').css('cursor', 'crosshair'); 
    $('#plan').bind('mousedown', {kind: kind}, newIssue); 
    } 

<p> 
    <ul class="sf-menu sf-vertical"> 
    <li><a href="#">New ID</a> 
     <ul> 
      <li><a href="javascript:prepNewIssue('Repairable')">Repairable</a></li> 
      <li><a href="javascript:prepNewIssue('Survey Mark')">Survey Mark</a></li> 
     </ul> 
    <li> 
    </ul> 
    </p> 
+2

你使用jQuery,为神的缘故使用适当的事件处理程序。 – adeneo

回答

2

内嵌的事件处理程序要求指定的函数是全局性的。

机会是你的函数是$(document).ready块内定义的,因此它在该块的范围,而不是唯一的全球性定义。

当你使用jQuery,你应该用它来注册你的事件处理程序和报废在线注册。

+0

我真的很感谢答案,我仔细检查了一下,看它是否确实是全球性的,一切似乎都已经结束。我很困惑你的意思是内联注册,虽然 –

+0

@JustinGonzalez我的意思是'href =“javascript:...”',即DOM0链接。您应该使用jQuery的'.on'方法将JS处理程序添加到元素。正如FelixKling在其他答案中指出的那样,您通常应该使用'div','span'或'button'来执行此操作,而不是使用''。 – Alnitak

+0

非常感谢:D –

0

href属性是要浏览该链接被点击时的URL。如果要在单击链接时运行脚本,则需要在HTML元素的onclick事件中指定该脚本。

如果不真正想要的浏览器导航到一个新的页面,你不应该使用一个连接元件()。

+2

用'javascript:'前缀它指定它是一个函数调用,而不是HTTP请求 – Dennis

+1

@ Dennis:是的,但答案仍然有一定的道理。链接具有特定的*语义*,即链接到另一个文档。不幸的是,链接被频繁地用作按钮。 –