日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

ie 7/8不支持trim的屬性的解決方案

在ie 7 8瀏覽器中 , 如果使用trim()屬性去除空格的話 , 則會導(dǎo)致報(bào)錯 。

因此解決這個問題有如下方案:

var aa = $("#id").val().trim() --- 在IE中無法解析trim() 方法
解決辦法:
[ var aa = $.trim($("#id").val()); ] 這個不好用 , 還是用下面介紹的吧 , 第一個已經(jīng)過測試 。

W3C那幫人的腦袋被驢踢了,直到j(luò)ava script1.8.1才支持trim函數(shù)(與trimLeft,trimRight),可惜現(xiàn)在只有 firefox3.5支持 。由于去除字符串兩邊的空白實(shí)在太常用,各大類庫都有它的影子 。加之,外國人都很有研究精力,搞鼓了相當(dāng)多實(shí)現(xiàn) 。
實(shí)現(xiàn)1 OK 的 。(在js中寫上這個 , 然后直接在你要去空格的字符串后面跟上 .trim() 即可)
復(fù)制代碼 代碼如下:
String.prototype.trim = function () {
return this .replace(/^ss*/, ’’ ).replace(/ss*$/, ’’ );
}

看起來不怎么樣,動用了兩次正則替換,實(shí)際速度很是驚人,主要得益于瀏覽器的內(nèi)部優(yōu)化 。一個著名的例子字符串拼接,直接相加比用Array做成的StringBuffer還快 。base2類庫施用這種實(shí)現(xiàn) 。
實(shí)現(xiàn)2
復(fù)制代碼 代碼如下:
String.prototype.trim = function () {
return this .replace(/^s /, ’’ ).replace(/s $/, ’’ );
}

和實(shí)現(xiàn)1很相似,但稍慢一點(diǎn),主要原因是它最先是假設(shè)至少存在一個空白符 。Prototype.js施用這種實(shí)現(xiàn),不過其名兒為strip,因?yàn)镻rototype的方法都是力圖與Ruby重名 。
實(shí)現(xiàn)3
復(fù)制代碼 代碼如下:
String.prototype.trim = function () {
returnthis .substring(Math.max( this .search(/S/), 0), this .search(/Ss*$/) 1);
}

以截取方式取得空白部分(當(dāng)然允許中間存在空白符),總共調(diào)用了4個原生方法 。預(yù)設(shè)得很是巧妙,substring以兩個數(shù)碼作為參數(shù) 。Math.max以兩個數(shù)碼作參數(shù),search則歸回一個數(shù)碼 。速度比上邊兩個慢一點(diǎn),但比下面大大都都快 。
實(shí)現(xiàn)4
復(fù)制代碼 代碼如下:
String.prototype.trim = function () {
returnthis .replace(/^s |s $/g, ’’ );
}

這個可以稱得上實(shí)現(xiàn)2的簡化版,就是利用候選操作符連接兩個正則 。但這樣做就落空了瀏覽器優(yōu)化的機(jī)會,比不上實(shí)現(xiàn)3 。由于看來很優(yōu)雅,許多類庫都施用它,如JQuery與mootools
實(shí)現(xiàn)5
復(fù)制代碼 代碼如下:
String.prototype.trim = function () {
var str = this ;
str = str.match(/S (?:s S )*/);
return str ? str[0] : ’’ ;
}

match是歸回一個數(shù)組,是以原字符串切合要求的部分就成為它的元素 。為了防止字符串中間的空白符被解除,咱們需要動用到非捕獲性分組(?:exp) 。由于數(shù)組可能為空,咱們在后面還要做進(jìn)一步的判定 。好像瀏覽器在處理分組上比力無力,一個字慢 。所以不要迷信正則,雖然它基本上是萬能的 。
實(shí)現(xiàn)6
復(fù)制代碼 代碼如下:
String.prototype.trim = function () {
return this .replace(/^s*(S*(s S )*)s*$/, ’$1’ );
}

把切合要求的部分提供出來,放到一個空字符串中 。不過效率很差,尤其是在IE6中 。
實(shí)現(xiàn)7
復(fù)制代碼 代碼如下:
String.prototype.trim = function () {
return this .replace(/^s*(S*(?:s S )*)s*$/, ’$1’ );
}

【ie 7/8不支持trim的屬性的解決方案】和實(shí)現(xiàn)6很相似,但用了非捕獲分組進(jìn)行了優(yōu)點(diǎn),性能效之有一點(diǎn)點(diǎn)提升 。
實(shí)現(xiàn)8
復(fù)制代碼 代碼如下:
String.prototype.trim = function () {
return this .replace(/^s*((?:[Ss]*S)?)s*$/, ’$1’ );
}

沿著上邊兩個的思路進(jìn)行改進(jìn),動用了非捕獲分組與字符集合,用?頂替了*,效果很是驚人 。尤其在IE6中,可以用瘋狂來形容這次性能的提升,直接秒殺火狐 。
實(shí)現(xiàn)9
復(fù)制代碼 代碼如下:
String.prototype.trim = function () {
return this .replace(/^s*([Ss]*?)s*$/, ’$1’ );

推薦閱讀