我有一个名为name
的字符串变量。 name
包含字符串14'6"
。我正在尝试将name
传递给函数。我正在尝试将onclick
添加到这样的tablerow中:
$("#trID").attr('onclick', 'testFunction(' + name + ')');
我尝试使用转义字符来实现此目的,但是由于字符串包含单引号('
和双引号("
),因此我无法使用它。< / p>
有什么方法可以将字符串传递给函数,还是必须完全更改字符串?
谢谢!
答案 0 :(得分:2)
要执行所需的操作,您需要对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>
答案 1 :(得分:0)
尝试使用javascript的字符串模板
$("#trID").attr('onclick', `testFunction(${name})`);
答案 2 :(得分:0)
您可以使用JSON作为代理,因为其数组语法基于JavaScript,JSON.stringify()可以处理JSON片段(例如独立字符串):
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>