0

ヒューストンには状況があります..どんな光でも大歓迎です。

説明するのは難しいですが、最善を尽くします。宿題をしましたが、解けませんでした。次のようなコードを用意します。(静的で、変更が難しい。既存の構造に対する解決策を見つける必要がある。)

問題の配列は grade[] です。

(line 1)  \<input id='grade[]'  onclick="curr_ndx(this);" \>   // index of grade[] is 0
(line 2)  \<input id='grade[]'  onclick="curr_ndx(this);" \>   // index of grade[] is 1
(line 3)  \<input id='grade[]'  onclick="curr_ndx(this);" \>   // index of grade[] is 2

「グレード[]」の配列内の入力の「グレード[]」のインデックスを取得する必要があります。ユーザーが行 2 の「入力」をクリックすると、アラート「1」、またはユーザーがクリックした場合は「2」(行 3 入力) が警告されます。

本当にありがとう。

4

3 に答える 3

2

jQuery では、このメソッドを使用して.index()、特定のアイテムがどの兄弟であるかを次のように調べることができます。

HTML:

<div id="grades">
<input \>
<input \>
<input \>
</div>

コード:

$("#grades input").click(function() {
    alert($(this).index());
});

実際のデモ: http://jsfiddle.net/jfriend00/xvVGx/

参考までに、入力フィールドに id 値を重複させないでください。おそらく、name='grade[]'代わりにを使用するつもりでしid='grade[]'た。


他の入力フィールドがあり、そのフィールドのみをカウントしたい場合は、次のid='grade[]'ようにします。

$("#grades input").click(function() {
    alert($(this).index("[id*='grade[]']"));
});

しかし、実際には重複した id 値を持つべきではないので、おそらく次のようになるはずです:

HTML:

<div id="grades">
<input name='grade[]' \>
<input name='grade[]' \>
<input name='grade[]' \>
</div>

コード:

$("#grades input[name='grade[]']").click(function() {
    alert($(this).index("[name='grade[]']"));
});
于 2013-03-26T05:50:01.753 に答える
0

Jquery index() http://api.jquery.com/index/を使用できます。

$('input').click(function() {
  alert($(this).index());
})
于 2013-03-26T05:52:33.227 に答える
0

要素にすべて同じ名前を付けると、関数は次のようになります。

function curr_ndx(el) {
  var els = document.getElementsByName(el.name);
  for (var i=0, iLen=els.length; i<iLen; i++) {
    if (els[i] == el) return i;
  }
}

要素がフォーム内にある場合は、それも活用できます。

function curr_ndx(el) {
  var els = el.form[el.name];
  for (var i=0, iLen=els.length; i<iLen; i++) {
    if (els[i] == el) return i;
  }
}
于 2013-03-26T05:53:19.953 に答える