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

Sar*_*iri 10 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>
Run Code Online (Sandbox Code Playgroud)

使用其他形式的代码运行良好.

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

Tus*_*har 15

你收到了错误

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

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

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

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

var vname = $("#EarningsTypes").val() || '';
Run Code Online (Sandbox Code Playgroud)

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

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

  • 或者只使用它:`var vname = $("#EarningsTypes").val()|| ""`. (7认同)