5

需要解析 URL 的 Get 变量。我制作了一个 document.location 的 jQuery 对象,然后使用 attr 函数获取搜索属性以获取所有变量。但是当我在它上面使用 split 函数并且之后使用 each() 时,它会给出错误,指出对象没有方法 each 。

TypeError: Object [object Array] has no method 'each'  

代码是:

 $(document.location).attr('search').split('&').each()

我也尝试在第一个函数中使用搜索属性,但它不允许它,即 $(document.location.search) 给出错误。

我还检查了 split 函数返回的数据类型,控制台说它是一个对象,我也很困惑它应该是一个数组。

PS:以上所有代码都在 jQuery 的 document.ready 函数中

4

4 回答 4

7

从对象创建 jQuery 对象document.location是没有意义的,因为它不是 DOM 元素。

只需search从对象中获取属性,并在循环数组时使用$.each方法,而不是元素:.each

$.each(document.location.search.split('&'), function(){
  ...
});
于 2013-04-05T12:30:55.727 回答
5

试试这个:

$.each($(document.location).attr('search').split('&'), function (index, value) {
    alert(index + ': ' + value);
});

jQuery.each()方法用于迭代 jQuery 对象,为每个匹配的元素执行一个函数。

但是您从中得到的$(document.location).attr('search').split('&')是一个 JavaScript 数组,它显然没有“每个”方法:这就是您收到错误的原因。

要在 jQuery 中循环遍历数组,您需要使用$.each()上述方法。

于 2013-04-05T12:29:57.780 回答
0

据我所知,JS 数组没有 each() 函数。

尝试

var search_arr = $(document.location).attr('search').split('&');
for (var s in search_arr) {
    console.log(search_arr[s];
}

反而。

于 2013-04-05T12:36:46.380 回答
-1

jQuery 的each()函数是要自己调用的,直接从 jQuery 中调用;javascript 数组没有它作为函数,因为它不是那样构建的。

我想你正在寻找这个:

$.each($(document.location).attr('search').split('&'), function (index, value) {
    // stuff
});
于 2013-04-05T12:30:19.203 回答