拼接字符轉的轉義


  在程序中經常會寫到字符串的拼接,最常見的一中方式就是把拼接的字符串返回到頁面上,然后讓瀏覽器渲染成html代碼。

現在es6已經用的不少了,但是因為一些原因,有的項目只能用最原始的加號“+”拼接,所以就會出現一種情況;請看下面的代碼:

1 var stringify_json = JSON.stringify(rowObject);
2 var str2 = 1;
1 str +="<input onclick='del_id("+stringify_json+","+str2+")' type='button' value='刪除' />";
2 function del_id(a,b){
3     console.log(a);
4     console.log(b);
5 }

 

上面是代碼的生命,這個時候是沒有問題的,你把str直接返回到頁面,頁面是可以正常的解析的,點擊這個按鈕也是能打印的;下面是打印的結果

打印的結構是沒有任何問題的。但是當我們把str2換成字符串的時候,就發現頁面開始報錯了。

也就是上面的代碼改成str2 = "string"的時候,頁面開始報錯了;下面是錯誤的信息,和頁面的渲染結果;

發現這個並不是按照字符串拼接上去的, 所以js認為這個是方法,所以就出現上上面的錯誤了。

所以我們在拼接的時候,就需要給這個string兩邊加上引號,所以就有了下面的代碼:

1 str +="<input onclick='del_id("+stringify_json+",'"+str2+"')' type='button' value='刪除' />";

然后再頁面上的渲染就是這樣的了。

也就是說,html解析器在解析到string前面的引號的時候,就認為這一段就完成,所以頁面也就直接報錯了,也就是說,咱們需要把拼接上的單引號,變成雙引號;

下面的截圖是我的編輯器的,我直接把上面代碼中的單引號改成雙引號的。

編輯器直接把str2不當成一個變量了。這個肯定是不行的了,所以這個時候就需要用上咱們的轉移字符   "\"   了;

1 str +="<input onclick='del_id("+stringify_json+",\""+str2+"\""+")' type='button' value='刪除' />";

這個是加上轉移字符之后的,也就是說,\后面的引號,不當成是咱們拼接的東西,而是就是簡單的表示自己是個引號。這樣的話,我們就可以正常的打印了。

----------------華麗的分割線-----------------------------

現在已經有很多項目是用es6細的了,es6有更優美的拼接字符串的方式;請參見下面的鏈接

https://www.cnblogs.com/newze/p/7535470.html

這篇文章寫的不錯。大家可以自行查閱;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM