需要解析URL的Get变量。 我创建了一个document.location的jQuery对象,然后使用attr函数获取search属性来获取所有变量。但是当我在它上面使用split函数并且之后使用each()时,它会给出错误,指出对象没有每个方法。
TypeError: Object [object Array] has no method 'each'
代码是:
$(document.location).attr('search').split('&').each()
我还尝试在第一个函数中使用search属性,但它不允许它,即$(document.location.search)给出错误。
我还检查了split函数返回的数据类型,控制台说它是一个对象,我也很困惑它应该是一个数组。
P.S:以上所有代码都在jQuery的document.ready函数中
答案 0 :(得分:7)
从document.location
对象创建jQuery对象毫无意义,因为它不是DOM元素。
从对象获取search
属性,并在循环数组时使用$.each
方法intead .each
,而不是元素:
$.each(document.location.search.split('&'), function(){
...
});
答案 1 :(得分:5)
试试这个:
$.each($(document.location).attr('search').split('&'), function (index, value) {
alert(index + ': ' + value);
});
jQuery .each()
方法用于迭代jQuery对象,为每个匹配的元素执行一个函数。
但你从$(document.location).attr('search').split('&')
获得的是一个JavaScript数组,显然没有'each'方法:这就是你得到错误的原因。
要在jQuery中循环遍历数组,您需要使用上面的$.each()
方法。
答案 2 :(得分:0)
据我所知,JS-arrays没有each()函数。
尝试
var search_arr = $(document.location).attr('search').split('&');
for (var s in search_arr) {
console.log(search_arr[s];
}
代替。
答案 3 :(得分:-1)
jQuery的each()
函数本身就是直接从jQuery调用的; javascript数组没有将它作为函数,因为它不是以这种方式构建的。
我认为你正在寻找这个:
$.each($(document.location).attr('search').split('&'), function (index, value) {
// stuff
});