我正在尝试将javascript变量传递给onclick函数,该函数可以正常使用数字变量但不能使用字符串。我需要从像这样的对象传递attribut:
onclick="showImg(<%= ep.trackId%>);
我的showImg函数接受此attribut,但是当我尝试传递一个这样的字符串时:
onclick='showImg(\""+<%= ep.artworkUrl30 %>+"\");'>
该功能根本不起作用。有没有办法让它工作或绕过这个问题?
答案 0 :(得分:1)
您不希望使用函数调用污染html,因此请勿使用onclick属性。使用javaScript添加事件侦听器。
var someString = "\<%= ep.artworkUrl30 %>\";
element.addEventListener('click', function(someString){
//do something with someString
});
https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
答案 1 :(得分:1)
ASP.NET代码块(<%=
... %>
)在服务器端处理;无需连接引号。试试吧:
onclick='showImg("<%= ep.artworkUrl30 %>");'>
答案 2 :(得分:0)
我认为'
未正确关闭,请尝试
onclick='showImg(\"'+<%= ep.artworkUrl30 %>+'\");'>
编辑: 查看您的代码后 你可以尝试
<% var epArray = episodes[0]; %>
<% _.each(epArray, function(ep){ %>
<option value="<%= ep.trackNumber %>" onclick='showImg("<%= ep.artworkUrl30 %>");'><%= ep.trackName %></option>
<% }); %>
答案 3 :(得分:0)
这绝对是你如何逃避各种报价的问题。这真的取决于你的陈述的背景。如果你是原始HTML,那么你应该:
<body onclick='showImg("<%= ep.artworkUrl30 %>")'></body>
如果您需要字符串中的引号,那么这些将是:
<body onclick='showImg("\"<%= ep.artworkUrl30 %>\"")'></body>
但是,如果您尝试在javascript中生成HTML(就像它可能会出现一样),那么您可能必须使用其他字符串转义方法。