使用href用参数调用javascript函数

时间:2011-07-22 16:34:54

标签: javascript asp.net eval href

我正在尝试从href调用javascript函数。该函数有一个参数,将由eval函数检索。但是会发生一些错误。

脚本:

function rate(id) {

            // do something
        }

将调用该函数的标记:

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

我错过了什么?

4 个答案:

答案 0 :(得分: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。理想情况下,您将以编程方式分配事件并阻止事件对象的默认操作。

答案 1 :(得分:4)

您不应该使用" + + ",因为它只会被替换为数字:

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

答案 2 :(得分:3)

为什么称它为href?您只需创建一个按钮并将其设置为链接即可。那会更容易

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

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

答案 3 :(得分:2)

我认为根本不需要使用eval()。像这样的引号中的代码在顶级范围内进行评估。如果您确保在该顶级范围内定义了rate和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和速率都可以在顶级范围内使用。