我試圖從href調用javascript函數。該函數具有一個將由eval函數檢索的參數。但是會發生一些錯誤。使用href調用帶有參數的javascript函數
腳本:
function rate(id) {
// do something
}
的,將調用該函數標籤:
<a href="javascript:rate(" + <%#Eval("ID")%> + ")" >rate</a>
我缺少什麼?
我試圖從href調用javascript函數。該函數具有一個將由eval函數檢索的參數。但是會發生一些錯誤。使用href調用帶有參數的javascript函數
腳本:
function rate(id) {
// do something
}
的,將調用該函數標籤:
<a href="javascript:rate(" + <%#Eval("ID")%> + ")" >rate</a>
我缺少什麼?
你不應該做這樣的,但是你現在靠在問題可能是你的引用/連接。
如果<%#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
。理想情況下,您將以編程方式分配事件並阻止事件對象的默認操作。
我想用編程的方式來做,但是我面對那個rate函數的問題會調用jquery函數(對話框窗口的插件)。那麼,你有另外一種建議嗎? – Roobah
你不應該使用" + + "
,因爲它只是一個號碼代替:
<a href="javascript:rate(<%#Eval("ID")%>)">rate</a>
它的工作表示感謝。 – Roobah
爲什麼稱它爲href?您可以製作一個按鈕並將其設置爲鏈接形式。這將是容易很多
<button id = "myButton" onclick = "rate(<%#Eval("ID")%>)" >rate</button>
#myButton
{
border: none;
padding: none;
background-color: transparent;
}
我會使用它。謝謝 – Roobah
我根本沒有看到使用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和費率都在頂級範圍內可用。
什麼錯誤?爲什麼你向我們展示生成JS的服務器端代碼而不是生成的JS?你爲什麼不使用[漸進式增強](http://icant.co.uk/articles/pragmatic-progressive-enhancement/)? – Quentin
你得到什麼錯誤? – JAAulde
什麼是<%#Eval(「ID」)%> –