在JS参数中放置引号
Placing quotes in JS parameters
我正在为我的移动应用程序动态地用JS填充一个无序列表。我正在使用JQuery手机和Phonegap进行开发。
在我的列表中,我想在单击时调用一个带有参数的函数。我可以在不使用任何参数的情况下调用函数downloadPdf()
,但如果我添加了这些参数,就无法调用。我认为这与引号/双引号有关。
var $li = $("<li><a href='#' onclick='downloadPdf('"+val.title+"', '"+val.url+"')'>"+val.title+"</a></li>");
我无法调试,因为我正在手机上运行这个程序,所以我希望有一个更训练有素的人能够看到这里出了什么问题。val.title
和val.url
都保存字符串类型的值。
不要使用内联事件。您使用的是jQuery,它可以很容易地附加事件
var li = $("<li><a href='#'>"+val.title+"</a></li>");
li.find("a").on("click", function(){ downloadPdf(val.title,val.url); });
或者使用数据属性和通用onclick处理程序
var li = $("<li><a class='download' href='#'>"+val.title+"</a></li>");
li.find("a").data("title", val.title).data("url", val.url);
和通用点击
$(document).on("click", "a.download", function (event) {
var anc = $(this);
downloadPdf( anc.data("title"), anc.data("url"));
event.preventDefault();
}
@epascarello是对的,不要使用内联事件处理程序。
但直接回答这个问题就不用双引号了:
$("<li><a href='#' onclick='downloadPdf('""+val.title+"'", '""+val.url+"'")'>"+val.title+"</a></li>");
产品:
<li><a href='#' onclick='downloadPdf("value1", "value2")'>title</a></li>
退出报价
var val = {title: 'foo', url: 'http://foo'}
var $li = $('<li><a href="#" onclick="downloadPdf(''' + val.title + ''',''' + val.url + ''')">' + val.title + '</a></li>');
function downloadPdf() {
alert('params:' + JSON.stringify(arguments, null, 2));
}
$('body').append($li);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
或者为了更好地练习,请按照@epascarello的建议使用单击事件处理程序。
解决方案
首先,我建议将代码放在多行中,以便于阅读。
var $li = $(''
+ '<li>'
+ '<a href="#" onclick="downloadPdf('"' + val.title + ''", '"' + val.url + ''")">' + val.title
+ '</a>'
+ '</li>');
我专门为这个糟糕的模板做这件事。
其次,您需要使用'"
或''
转义引号
真正的建议
请注意epascarello在那里说的话。他的方式比一句话中逃离的混乱要好得多,也容易理解。
相关文章:
- 要求未定义JS回调参数
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 从node.js向CasperJS传递参数数组
- 在JS参数中放置引号
- Web Api 2属性路由和Angular JS参数
- 列表.js参数问题
- 在 HTML 中调用 JS 参数
- 为什么 %26 在作为 js 参数传递时被解码
- 从 HTML 传递 JS-参数
- 这是有效的 js 参数吗?
- 使用弹片路由敲除 JS 参数
- JS参数绑定不起作用
- 角度 js 参数 'DemoCtrl' 不是
- 由js参数中的数字引起的意外TOKEN非法
- Express JS:参数未定义
- 当使用button_to时,传递JS参数给控制器
- Rails将生成的js参数从表单传递到控制器
- Node.js参数不能正常工作
- 为什么有些js参数需要引号,而另一些则不需要't
- 可以't似乎将JS参数(变量)传递给Google Map API v3函数