1

特定のクラスを持つすべての div のテキストを配列にロードしようとしていますが、これは

var temp = $('.theClass').text();
    temp = temp.toArray();
    console.log(temp);

私にエラーを出し続けます

Uncaught TypeError: Object has no method 'toArray'

var tempArr = [];
var temp = $('.theClass').text();

for (var t in temp){

    tempArr.push(t);
}
console.log(tempArr);

整数で満たされたオブジェクト内に非常に多くのオブジェクトで満たされた配列になります。 クロムコンソールのスクリーンショット

これを適切に行う方法の説明はここにありますが、これらのエラーが発生する理由について誰かが説明してくれるのではないかと思います. ありがとう!

4

1 に答える 1

2

を使用mapして、一致したセットの各要素を反復処理し、一部のデータ (この場合はテキスト) を返すことができます。get次に、結果の jQuery オブジェクトを実際の配列に変換するために使用できます。

var arr = $('.theClass').map(function () {
    return $(this).text();
}).get();

textメソッドが文字列を返し、文字列にはメソッドがないため、最初の試行は失敗しtoArrayます (したがって、「オブジェクトにはメソッドがありません」というエラーが発生します)。

for...inループで文字列を反復処理しているため、2 回目の試行は失敗します。このループは、文字列の文字を繰り返します。各反復tには文字のインデックスが割り当てられるため、文字列内の文字ごとに 1 つの要素を持つ配列になります。for...inオブジェクトのプロパティ以外を反復するためにループを実際に使用するべきではありません。その場合でも、常にhasOwnPropertyチェックを含める必要があります。

于 2012-06-26T14:48:40.047 に答える