我试图.trim()
在我的一个JavaScript程序中应用一个字符串。在Mozilla下它可以正常工作,但是当我在IE8中尝试时会显示错误。有人知道这是怎么回事吗?无论如何,我可以使其在IE中工作吗?
码:
var ID = document.getElementByID('rep_id').value.trim();
错误显示:
消息:对象不支持此属性或方法 线:604 字符:2 代码:0 URI:http://test.localhost/test.js
添加以下代码以向字符串添加修剪功能。
if(typeof String.prototype.trim !== 'function') {
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, '');
}
}
看来该功能未在IE中实现。如果您使用的是jQuery,则可以$.trim()
改用(http://api.jquery.com/jQuery.trim/)。
jQuery的:
$.trim( $("#mycomment").val() );
有人使用,$("#mycomment").val().trim();
但这在IE上不起作用。
不幸的是,没有对trim()的跨浏览器JavaScript支持。
如果您不使用jQuery(具有.trim()方法),则可以使用以下方法为字符串添加修剪支持:
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
return this.replace(/\s+$/,"");
}
https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Objects/String/Trim
这是javascript的新增功能,IE不支持。
当尝试从输入中修剪值然后询问它是否等于零时,我遇到了类似的问题:
if ($(this).val().trim() == "")
但是,这在IE6-8的作品中投入了麻烦。够烦人的是,我试图像这样修改它:
var originalValue = $(this).val();
但是,使用jQuery的trim方法在所有浏览器中都非常适合我。
var originalValueTrimmed = $.trim($(this).val());
if (originalValueTrimmed == "") { ... }
我已经编写了一些代码来实现修剪功能。
LTRIM(向左修剪):
function ltrim(s)
{
var l=0;
while(l < s.length && s[l] == ' ')
{ l++; }
return s.substring(l, s.length);
}
RTRIM(修剪右):
function rtrim(s)
{
var r=s.length -1;
while(r > 0 && s[r] == ' ')
{ r-=1; }
return s.substring(0, r+1);
}
TRIM(修剪两侧):
function trim(s)
{
return rtrim(ltrim(s));
}
要么
我们也可以使用正则表达式。
function trimStr(str) {
return str.replace(/^\s+|\s+$/g, '');
}
我们可以从互联网上获得官方代码!引用此:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/trim
如果本地不可用,则在其他任何代码之前运行以下代码将创建trim()。
if (!String.prototype.trim) { (function() { // Make sure we trim BOM and NBSP var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; String.prototype.trim = function() { return this.replace(rtrim, ''); }; })(); }
更多信息:我刚刚发现有一个支持EcmaScript 5的js项目:https :
//github.com/es-shims/es5-shim
通过阅读源代码,我们可以获得有关trim的更多知识。
defineProperties(StringPrototype, {
// http://blog.stevenlevithan.com/archives/faster-trim-javascript
// http://perfectionkills.com/whitespace-deviations/
trim: function trim() {
if (typeof this === 'undefined' || this === null) {
throw new TypeError("can't convert " + this + ' to object');
}
return String(this).replace(trimBeginRegexp, '').replace(trimEndRegexp, '');
}
}, hasTrimWhitespaceBug);
我认为trim()
JavaScript标准中没有本地方法。也许Mozilla提供了一种,但是如果您想在IE中使用一种,则需要自己编写。此页面上有几个版本。
我在IE9中也遇到了同样的问题,但是当我在
<!DOCTYPE html>
<HTML>
<HEAD>...
.
.
问题已解决。
这是由于拼写错误getElementBy ID造成的。将其更改为getElementById
var res = function(str){
var ob; var oe;
for(var i = 0; i < str.length; i++){
if(str.charAt(i) != " " && ob == undefined){ob = i;}
if(str.charAt(i) != " "){oe = i;}
}
return str.substring(ob,oe+1);
}
刚刚发现IE不再支持trim()
,可能是在最近的Windows更新之后。如果您使用dojo,则可以使用dojo.string.trim()
,它可以跨平台工作。
文章标签:internet-explorer , javascript , trim
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
评论已关闭!