2013-04-05 20 views
5

URLのGet変数を解析する必要があります。 私はdocument.locationのjQueryオブジェクトを作成してから、attr関数を使用して検索属性を取得してすべての変数を取得しました。しかし、私はそれに分割関数を使用した後、each()を使用すると、オブジェクトにそれぞれメソッドがないことを示すエラーが返されます。Javascript分割関数とJqueryが連携していません

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

コードは次のとおりです。

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

私はまた、最初の関数で検索プロパティを使用しようとしましたが、それはそれは$(document.location.searchを)すなわち許可しないエラーが発生します。

私はまた、split関数によって返されるもののデータ型をチェックしました。コンソールはオブジェクトであると言っていますが、配列でなければならないことも混乱しています。

PS:上記のすべてのコードはjQueryののdocument.ready関数に進む

+0

[クエリ文字列の値を取得するにはどうすればよいですか?](http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values) –

答えて

7

は、無意味です。

だけオブジェクトからsearchプロパティを取得し、あなたが、配列ではなく、要素をループしているよう.eachのintead $.eachメソッドを使用します。

$.each(document.location.search.split('&'), function(){ 
    ... 
}); 
+1

downvoter - これはほぼ正しい回答です - Guffa - あなたは '.each()'を 'split '! – Alnitak

+1

document.location.search.split( '&')。each() TypeError:Object [オブジェクト配列]にメソッドがありません –

+0

@backTangent:すでにその部分も修正済みです。 '.each'ではなく' $ .each'を使います。 – Guffa

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()メソッドを使用する必要があります。

+0

私はこの方法で試してみました。それは動作しますが、私はこの問題を引き起こしているものにもっと興味があります。知識によって構築するのに役立ちます。 –

+0

@backTangent実際の問題は、jQueryオブジェクトにラップされたDOM要素ではないものに対して '.attr()'を使用しようとしています。 Guffaの答えはほとんど正しいです、そして、これは間違っています。 – Alnitak

+1

@backTangent:要素ではないオブジェクトからjQueryオブジェクトを作成することができ、現在は 'attr'メソッドを使用してそのオブジェクトから属性を取得していますが、文書化されていません。 jQueryの使用方法ではなく、文書化されていないため、引き続き動作するという保証はありません。 – Guffa

-1

jQueryのeach()関数は、jQueryから直接呼び出されることを意味します。 javascript配列は、そのように構築されていないため、関数として持っていません。

私はあなたがこのために探していると思う:それはDOM要素ではないのでdocument.locationオブジェクトからjQueryオブジェクトを作成

$.each($(document.location).attr('search').split('&'), function (index, value) { 
    // stuff 
}); 
0

私の知る限りでは、JS-配列にはありませんeach() - 関数を持っています。

ではなく

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

を試してみてください。

+0

回答する前に他の回答やコメントをお試しください。厳密には正しくありますが、本当の問題は 'document.location'に' .attr'を呼び出せないということです。 – Alnitak

+0

私は私の答えを入力していたので、他の答えはありませんでした。申し訳ありません。 – Vince

関連する問題