0

HTML マークアップの要素の ID として、次の 2 種類の文字列があります。

日付:

"april-23"
"march-20"

およびシーズン名:

"springtime"
"winter"

日付には、月と日を区切るダッシュがあります。

季節は、他のトークンのない 1 つの単語です。

月または季節を次の新しい変数に割り当てたいと思います。

time_of_year

私がこれを行う場合:

var time_of_year = $(this).attr("id").split('-')[0];

月には機能しますが、トークンを含まないシーズン名で呼び出すと、エラーが発生しますか?

これを行う安全な方法は何ですか?

4

3 に答える 3

4

エラーは返されませんが、長さが 1 の配列が返されます。

次のようなことができます。

var splitty = $(this).attr('id').split('-');
if (splitty.length > 1) {
   time_of_year = splitty[0];
}
else {
   // do something else magical here
}

splitに関するドキュメントは次のとおりです。

ただし、常に最初の値が必要で、他の値を気にしない場合は、元のコードを問題なく使用できます。

var time_of_year = $(this).attr('id').split('-')[0]
于 2009-07-20T16:21:48.813 に答える
3

を使用してハイフン文字が存在するかどうかを確認できますmystring.indexOf('-')(存在しない場合は -1 を返します)。しかし、その文字を含まない文字で文字列を分割すると、元の文字列が返されると確信しています。

于 2009-07-20T16:20:58.207 に答える
0

分割を実行する前にハイフンを追加しませんか? とにかく最初の要素をつかんでいます。2 つの要素の最初のものか、3 つの要素の最初のものかの違いは何ですか?

var time_of_year = $((this).attr("id")+'-x').split('-')[0];

そうすれば、最初のハイフンの左側にあるアイテムを取得でき、常に最初のハイフンが存在します。

「april-23-x」「springtime-x」

(注意してください、私はこれをテストしていませんし、構文に命を賭けているわけでもありません! しかし、それはあなたにとって新鮮なアイデアになるかもしれません.)

編集:ちなみに、元の投稿の例はとにかくうまくいくと思います。Split は長さ 1 のリストを返す必要があり、[0] 番目の要素を取得しています。これは完璧です。

于 2009-07-20T17:55:00.573 に答える