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)
我错过了什么?
你不应该这样做,但你目前面临的问题可能是你的引用/连接.
如果<%#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的.理想情况下,您将以编程方式分配事件并阻止事件对象的默认操作.
我认为根本不需要使用 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 在顶级范围内都可用。