簡體   English   中英

使用 href 調用帶有參數的 javascript function

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM