2013-07-01 169 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:是的,但答案仍然有一定的道理。鏈接具有特定的*語義*,即鏈接到另一個文檔。不幸的是,鏈接被頻繁地用作按鈕。 –