欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript實現(xiàn)格式化字符串函數(shù)String.format

 更新時間:2016年12月16日 15:48:53   作者:天碼行空  
本文主要介紹了JavaScript實現(xiàn)格式化字符串函數(shù)String.format(可自動解析引號轉(zhuǎn)義字符)。具有很好的參考價值,需要的朋友一起來看下吧

在js開發(fā)中,我們可能會遇到這樣一個問題

當(dāng)需要通過js動態(tài)插入html標(biāo)簽的時候

特別是當(dāng)遇到大量的變量拼接、引號層層嵌套的情況,會出現(xiàn)轉(zhuǎn)義字符問題,經(jīng)常出錯

我們來看個例子

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title></title>
 <script>
 window.onload = function () {
 var id = '1';
 var code = 'zhangsan';
 var name = '張三';
 document.getElementById('test').innerHTML = '<a href="#" onclick="buttonClick(\"' + id + '\",\"' + code + '\">' + name + '</a>';
 }
 function buttonClick(id, code) {
 alert(id + '-' + code);
 }
 </script>
</head>
<body>
 <div id="test"></div>
</body>
</html>

運行直接報錯

接下來把轉(zhuǎn)義字符\"改成\'試下

運行之后,發(fā)現(xiàn)仍然無法正常顯示

這樣的代碼不光看起來雜亂無章、難以維護,關(guān)鍵是很容易出錯

接下來我們開始封裝格式化字符串方法

String.js

(function () {
 /// <summary>
 /// 引號轉(zhuǎn)義符號
 /// </summary>
 String.EscapeChar = '\'';
 /// <summary>
 /// 替換所有字符串
 /// </summary>
 /// <param name="searchValue">檢索值</param> 
 /// <param name="replaceValue">替換值</param> 
 String.prototype.replaceAll = function (searchValue, replaceValue) {
 var regExp = new RegExp(searchValue, "g");
 return this.replace(regExp, replaceValue);
 }
 /// <summary>
 /// 格式化字符串
 /// </summary>
 String.prototype.format = function () {
 var regexp = /\{(\d+)\}/g;
 var args = arguments;
 var result = this.replace(regexp, function (m, i, o, n) {
 return args[i];
 });
 return result.replaceAll('%', String.EscapeChar);
 }
})();

通過占位符傳遞變量值,用%替代了引號轉(zhuǎn)義符,代碼簡潔了很多,也非常方便維護,出錯的機率也小了很多

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title></title>
 <script src="String.js"></script>
 <script>
 window.onload = function () {
 var id = '1';
 var code = 'zhangsan';
 var name = '張三';
 document.getElementById('test').innerHTML = '<a href="#" onclick="buttonClick(%{0}%,%{1}%)">{2}</a>'.format(id, code, name);
 }

 function buttonClick(id, code) {
 alert(id + '-' + code);
 }
 </script>
</head>
<body>
 <div id="test"></div>
</body>
</html>

看下測試效果

測試結(jié)果正確,并且點擊事件中也正確接收到了參數(shù)值

案例下載地址:http://xiazai.jb51.net/201612/yuanma/StringFormat_jb51.rar

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關(guān)文章

  • D3.js的基礎(chǔ)部分之?dāng)?shù)組的處理數(shù)組的排序和求值(v3版本)

    D3.js的基礎(chǔ)部分之?dāng)?shù)組的處理數(shù)組的排序和求值(v3版本)

    這篇文章主要介紹了D3.js的基礎(chǔ)部分之?dāng)?shù)組的處理數(shù)組的排序和求值(v3版本) ,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • Bootstrap每天必學(xué)之基礎(chǔ)排版

    Bootstrap每天必學(xué)之基礎(chǔ)排版

    Bootstrap每天必學(xué)之基礎(chǔ)排版,排版是學(xué)習(xí)的最基礎(chǔ)環(huán)節(jié),相當(dāng)于地基,所以大家一定要認(rèn)真對待,認(rèn)真學(xué)習(xí)本文內(nèi)容。
    2015-11-11
  • JavaScript中數(shù)組去重的5種方法

    JavaScript中數(shù)組去重的5種方法

    這篇文章主要介紹了JavaScript中數(shù)組去重的5種方法,文中講解非常詳細(xì),實例代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • 如何將JavaScript將數(shù)組轉(zhuǎn)為樹形結(jié)構(gòu)

    如何將JavaScript將數(shù)組轉(zhuǎn)為樹形結(jié)構(gòu)

    我們經(jīng)常會碰到樹形數(shù)據(jù)結(jié)構(gòu),比方組織層級、省市縣或者者動植物分類等等數(shù)據(jù),那么如何將JavaScript將數(shù)組轉(zhuǎn)為樹形結(jié)構(gòu),本文就詳細(xì)的來了解一下
    2021-06-06
  • 淺析js實現(xiàn)網(wǎng)頁截圖的兩種方式

    淺析js實現(xiàn)網(wǎng)頁截圖的兩種方式

    這篇文章主要介紹了淺析js實現(xiàn)網(wǎng)頁截圖的兩種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • JS實現(xiàn)網(wǎng)絡(luò)請求的三種方式梳理

    JS實現(xiàn)網(wǎng)絡(luò)請求的三種方式梳理

    本文主要為大家介紹了基于 XMLHttpRequest、Promise、async/await 等三種異步網(wǎng)絡(luò)請求的寫法,文中的示例代碼講解詳細(xì),感興趣的可以學(xué)習(xí)一下
    2022-03-03
  • javascript創(chuàng)建元素和刪除元素實例小結(jié)

    javascript創(chuàng)建元素和刪除元素實例小結(jié)

    這篇文章主要介紹了javascript創(chuàng)建元素和刪除元素,結(jié)合實例形式總結(jié)分析了javascript針對頁面元素的動態(tài)創(chuàng)建、刪除及子元素操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2019-06-06
  • ES6中Set和Map數(shù)據(jù)結(jié)構(gòu)的簡單講解

    ES6中Set和Map數(shù)據(jù)結(jié)構(gòu)的簡單講解

    大家心里是否產(chǎn)生過這樣的疑問,JS中既然已經(jīng)有對象這種數(shù)據(jù)結(jié)構(gòu),我們?yōu)槭裁催€要再單獨去使用Set或者Map呢?下面這篇文章主要給大家介紹了關(guān)于ES6中Set和Map數(shù)據(jù)結(jié)構(gòu)的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • 用Webpack構(gòu)建Vue項目的實踐

    用Webpack構(gòu)建Vue項目的實踐

    這篇文章主要介紹了用Webpack構(gòu)建Vue項目的實踐,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • 談?wù)勎覍avaScript中typeof和instanceof的深入理解

    談?wù)勎覍avaScript中typeof和instanceof的深入理解

    這次主要說說javascript的類型判斷函數(shù)typeof和判斷構(gòu)造函數(shù)原型instanceof的用法和注意的地方,對本文感興趣的朋友一起看看吧
    2015-12-12

最新評論