使用href用参数调用javascript函数

Roo*_*bah -1 javascript asp.net eval href

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

脚本:

function rate(id) {

            // do something
        }
Run Code Online (Sandbox Code Playgroud)

一个将调用该函数的标记:

<a href="javascript:rate(" + <%#Eval("ID")%> + ")" >rate</a>
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

JAA*_*lde 6

你不应该这样做,但你目前面临的问题可能是你的引用/连接.

如果<%#Eval("ID")%>只是生成一个INT,这应该工作:

<a href="javascript:rate( <%#Eval("ID")%> )" >rate</a>
Run Code Online (Sandbox Code Playgroud)

如果它是一个字符串,

<a href="javascript:rate( '<%#Eval("ID")%>' )" >rate</a>
Run Code Online (Sandbox Code Playgroud)

应该为你做,虽然你需要处理<%#Eval("ID")%>生成任何单引号的情况.

一堂课:

我说你不应该这样做因为javascript伪协议(javascript:)已经不存在且不合适.在最坏的情况下,你应该使用一个onclick返回false的.理想情况下,您将以编程方式分配事件并阻止事件对象的默认操作.


jfr*_*d00 5

我认为根本不需要使用 eval() 。像这样的引号中的代码在顶级范围内进行评估。如果您确保在该顶级范围内定义了 rate 和 ID,那么它将在没有 eval() 的情况下使用此 HTML 工作:

<a href="#" onclick="rate(ID);">rate</a>
Run Code Online (Sandbox Code Playgroud)

和这个代码:

var ID = 3;

function rate(id) {
    alert(id);
    return(false);
}
Run Code Online (Sandbox Code Playgroud)

你可以在这里看到它的工作:http : //jsfiddle.net/jfriend00/bqqpM/。在没有 eval 的情况下完成这项工作的技巧只是确保 ID 和 rate 在顶级范围内都可用。