簡體   English   中英

如何傳遞包含單引號和雙引號的字符串?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM