未捕获的TypeError:无法在Jquery中读取未定义的属性'trim'

时间:2015-09-23 07:23:13

标签: javascript jquery html5

在Jquery中将空格字符替换为'%20'。但是以其他形式工作而不是单一形式。 in包括标题为

<header>
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
</header>

使用其他形式的代码,它运作良好。

var vname = $("#EarningsTypes").val();
vname = vname.trim().replace(/ /g, '%20');
jQuery.noConflict();

1 个答案:

答案 0 :(得分:13)

您收到错误

  

未捕获的TypeError:无法读取属性&#39; trim&#39;在Jquery

中未定义

这意味着变量vnameundefined。为了防止发生此错误,您可以使用三元运算符将字符串的默认值设置为空字符串undefined

var vname = $("#EarningsTypes").val() == undefined ? '' : $("#EarningsTypes").val().trim();
vname = vname.replace(/ /g, '%20');

您还可以使用||设置默认值

var vname = $("#EarningsTypes").val() || '';

如果您使用的是不支持trim的旧版浏览器,则可以使用polyfill from MDN

if (!String.prototype.trim) {
  String.prototype.trim = function() {
    return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
  };
}