【发布时间】:2013-12-10 16:08:22
【问题描述】:
我正在使用一个脚本在 URL 中搜索查询字符串,如果找到则忽略该查询。该脚本有效,但仅当存在查询字符串时。我得到的错误是Uncaught TypeError: Cannot call method 'indexOf' of undefined,所以很明显错误发生在哪里,我只是不知道如何解决它。我只需要在找到查询字符串时执行indexOf,对吗?我怎样才能做到这一点?
这是导致错误的JS:
var href = jQuery(this).attr('href');
var fname = href;
var query = href.indexOf("?");
if (query !== -1) {
fname = href.substr(0, query);
}
我认为要解决这个问题,我只需要有条件地执行脚本的 href.indexOf("?"); 部分,但到目前为止我的所有尝试都失败了。
【问题讨论】:
-
到目前为止我所有的尝试都失败了好吧,你尝试了什么?
-
既然你在看
href属性,你应该可以只看search属性,它代表href的查询字符串。例如,var a = document.createElement("a"); a.href = "http://www.example.com/?var=val"; alert(a.search); -
您正在尝试调试一个错误,其中 OP 没有说出他想要做什么。此脚本是否在
A标签上运行?您要查看window.location吗?简单的var href = jQuery(this).attr('href') || '';将删除错误,但不会修复其背后的逻辑。 -
在弱类型语言中,按摩通常比条件更快/更简单:href.indexOf("?") 可以安全地使用 String(href).indexOf("?");你也可以安全地使用调用形式:"".indexOf.call(href , "?" )
-
href && href.indexOf("?");解决您的核心问题。
标签: javascript url query-string