2011-07-22 227 views
-2

我試圖從href調用javascript函數。該函數具有一個將由eval函數檢索的參數。但是會發生一些錯誤。使用href調用帶有參數的javascript函數

腳本:

function rate(id) { 

      // do something 
     } 

的,將調用該函數標籤:

<a href="javascript:rate(" + <%#Eval("ID")%> + ")" >rate</a> 

我缺少什麼?

+1

什麼錯誤?爲什麼你向我們展示生成JS的服務器端代碼而不是生成的JS?你爲什麼不使用[漸進式增強](http://icant.co.uk/articles/pragmatic-progressive-enhancement/)? – Quentin

+1

你得到什麼錯誤? – JAAulde

+1

什麼是<%#Eval(「ID」)%> –

回答

6

你不應該做這樣的,但是你現在靠在問題可能是你的引用/連接。

如果<%#Eval("ID")%>只是產生一個INT,這應該工作:

<a href="javascript:rate(<%#Eval("ID")%>)" >rate</a> 

如果它是一個字符串,

<a href="javascript:rate('<%#Eval("ID")%>')" >rate</a> 

應該爲你做,但你需要處理的<%#Eval("ID")%>生產情況任何帶有單引號的內容。

一個教訓:

我說,你不應該這樣做,因爲它的JavaScript僞協議(javascript:)是解散的和不適當的。最壞的情況下,你應該使用返回false的onclick。理想情況下,您將以編程方式分配事件並阻止事件對象的默認操作。

+0

我想用編程的方式來做,但是我面對那個rate函數的問題會調用jquery函數(對話框窗口的插件)。那麼,你有另外一種建議嗎? – Roobah

4

你不應該使用" + + ",因爲它只是一個號碼代替:

<a href="javascript:rate(<%#Eval("ID")%>)">rate</a> 
+0

它的工作表示感謝。 – Roobah

3

爲什麼稱它爲href?您可以製作一個按鈕並將其設置爲鏈接形式。這將是容易很多

<button id = "myButton" onclick = "rate(<%#Eval("ID")%>)" >rate</button> 

#myButton 
{ 
    border: none; 
    padding: none; 
    background-color: transparent; 
} 
+0

我會使用它。謝謝 – Roobah

1

我根本沒有看到使用eval()的任何需要。這樣的引號中的代碼將在頂級作用域中進行評估。如果您確保這兩個利率和ID在該頂層範圍定義,那麼它會工作沒有的eval()與此HTML:

<a href="#" onclick="rate(ID);">rate</a> 

和驗證碼:

var ID = 3; 

function rate(id) { 
    alert(id); 
    return(false); 
} 

你可以看到它在這裏工作:http://jsfiddle.net/jfriend00/bqqpM/。使這項工作沒有eval的訣竅就是確保ID和費率都在頂級範圍內可用。

+0

我使用eval,因爲a標籤位於中繼器內。並指定哪一行是我必須使用eval。 – Roobah

+0

好的,下一次實際頁面HTML的代表性示例會更好,那麼我們就會知道您想要解決的總體問題。 – jfriend00