[英]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.