[英]How to pass a string that contains single and double quotes?
我有一个名为name
的字符串变量。 name
包含字符串14'6"
。我正在尝试将name
传递给 function。我正在尝试将onclick
添加到如下表格中:
$("#trID").attr('onclick', 'testFunction(' + name + ')');
我尝试使用转义字符来实现这一点,但是我没有让它工作,因为字符串包含单引号( '
)和双引号( "
)。
有没有办法可以将字符串传递给 function 或者我必须完全更改字符串?
谢谢!
要执行您需要的操作,您需要转义name
字符串中的单引号/双引号。 为此,您可以使用正则表达式:
name = name.replace(/([\""|\''])/g, '\\$1');
$("#trID").attr('onclick', 'testFunction(' + name + ')');
但是应该注意的是,使用内联事件处理程序,即。 您示例中的onclick
属性不是一个好习惯。 您应该改用不显眼的事件处理程序。
由于您已经在页面中包含了 jQuery ,因此可以使用事件处理程序和data
属性来实现,如下所示:
let $div = $("#trID").on('click', function() { console.log($(this).data('foo')); }); $('button').on('click', function() { $div.data('foo', (new Date()).getTime()); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="trID" data-foo="14'6"">Click me to display value</div> <button>Click me to change value</button>
试试javascript的字符串模板
$("#trID").attr('onclick', `testFunction(${name})`);
You can use JSON as proxy since its array syntax is based on JavaScript and JSON.stringify() can cope with JSON fragments (such a standalone string):
function testFunction(param){ console.log(param); } var rawName = "one\n\"two\"\n'three'\nfour"; var encodedName = JSON.stringify(rawName); console.log(rawName, encodedName); $("#trID").attr('onclick', 'testFunction(' + encodedName + ')');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <button id="trID">Click Me!</button>
无论如何,值得注意的是,您一开始就不需要它。 动态生成的代码很难。 由于您使用的是 jQuery,因此更清洁的方法是:
function testFunction(param){ console.log(param); } var name = "one\n\"two\"\n'three'\nfour"; $("#trID").on('click', function() { testFunction(name); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <button id="trID">Click Me!</button>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.