![](/img/trans.png)
[英]Add onclick function to a href with a this parameter using Javascript
[英]using a href to call javascript function with parameter
我正在嘗試從href調用 javascript function 。 function 有一個參數,該參數將由 eval function 檢索。 但是會發生一些錯誤。
腳本:
function rate(id) {
// do something
}
將調用 function 的標簽:
<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
。 理想情況下,您將以編程方式分配事件並阻止事件對象的默認操作。
你不應該使用" + + "
,因為它只會被一個數字代替:
<a href="javascript:rate(<%#Eval("ID")%>)">rate</a>
為什么稱它為href? 您可以制作一個按鈕並將其設置為鏈接。 那會容易得多
<button id = "myButton" onclick = "rate(<%#Eval("ID")%>)" >rate</button>
#myButton
{
border: none;
padding: none;
background-color: transparent;
}
我認為根本不需要使用 eval() 。 像這樣的引號中的代碼在頂層 scope 進行評估。 如果您確保在頂層 scope 上定義了速率和 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 和 rate 在頂層 scope 中都可用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.