2016-07-14 7 views
1

私はこの仕事をすることができないと私は多くの異なる組み合わせを試してみました。私がしたいのは、配列に書き込む前に.each()イテレータから返されたテキストから4,5文字を取得することだけです。jQuery .each()ループ内で返されるテキストで.slice()を使用する方法?

var timeItems = []; 
    $("div[class*='field-name-field-time-']").each(function (i, e) { 
     $(this).text().slice(3,5); 
     timeItems.push($(e)); 
    }); 

ありがとうございます!

+0

[OK]を、あなたのテキストは、このテキストのように内側に位置しており、現在、あなたはそれを取ると、どこにも –

答えて

0
var timeItems = []; 
$("div[class*='field-name-field-time-']").each(function (i, e) { 
    var text = $(e).text().slice(3,5); 
    timeItems.push(text); 
}); 
  1. eachパラメータの代わりに、thisから2番目の引数を使用してみてください。
  2. 変数にスライスを割り当て、プッシュに戻ります。質問は、多くの場合、発生し

http://www.w3schools.com/jsref/jsref_slice_string.asp)「これは要素がある場合は、なぜ、コールバックに渡された二DOM要素の引数がありますか?」 意図的であっても偶然であっても、実行コンテキストは変更される可能性があります。一貫してキーワードthisを使用すると、自分自身や他の開発者がコードを読んで混乱することは簡単になります。

https://learn.jquery.com/using-jquery-core/iterating/#the-second-argument

+0

おかげで、ステファンそれを保管していないので、あなたは、timeItemsに要素やテキストをプッシュしたいです私はこれを試しましたが、それでもまだテキストが返っていません... – Alpinist1974

+0

私はあなたの問題のcodepen/plunkrを提供できますか? http://codepen.io/ –

+0

test this fiddle:https://jsfiddle.net/r63c15tz/2/ –

1

も動作するはずです。この

var timeItems = []; 
$("div[class*='field-name-field-time-']").each(function (i, e) { 

    var text = $(e).text().substring(3,5); //Dont forget to store them somewhere 
    timeItems.push($(e)); 
}); 

.slice()を試してみてください。以下のJSFiddleをチェックし、スライスを使っている行のコメントを外してください。

また、配列に何を返すのですか?私はオブジェクトを意味すると仮定していますが、文字を返す場合は$(e)の代わりにtexttimeItemsにプッシュする必要があります。

EDIT:https://jsfiddle.net/nv5tfszw/4/

関連する問題