Массив кнопок, узнать индекс нажатой кнопки
Имеется массив кнопок button[]. Как узнать индекс нажатой кнопки? Два часа рылся в интернете, а так же на этом форуме, ответ не нашел. Я решил задачу, но считаю, что должно быть решение проще:
<script> function ins(e){ var o = document.getElementsByName('butt[]'); for (i=0;i<o.length;i++){ if (o(i) == e) alert ('Индекс ' + i); } } </script> <input type='button' name='butt[]' value='ok1' onclick='ins(this)'/> <input type='button' name='butt[]' value='ok2' onclick='ins(this)'/> <input type='button' name='butt[]' value='ok3' onclick='ins(this)'/> <input type='button' name='butt[]' value='ok4' onclick='ins(this)'/> <input type='button' name='butt[]' value='ok5' onclick='ins(this)'/> <input type='button' name='butt[]' value='ok6' onclick='ins(this)'/> |
function ins(t){ alert(t.value.substring(2,3)); } |
на чистом js без цикла вроде никак, не прибегая к ручному заданию номеров и их извлечению (например, как показал vadim5june)
Цитата:
добавить return, o.length - в отдельную переменную (хотя и Фленаган и Илья Кантор почему-то этого не делают, хотя по идее это выражение вычисляется каждый раз http://es5.javascript.ru/x12.html#x12.6.3 Цитата:
видимо из-за того, что машины стали слишком производительными :) PS: атрибут onclick уже давно признак плохого стиля, не |
Цитата:
Цитата:
Спасибо за детальные замечания, поправил код: function ins(e){ var o = document.getElementsByName('butt[]'); var l = o.length; for (i=0; i<l; i++){ if (o[i] == e) {var ind = i; break;} } alert ('Индекс ' + ind); } |
Цитата:
|
что-нибудь типа такого
<form id="form"> <input type='button' name='butt[]' value='ok1'/> <input type='button' name='butt[]' value='ok2'/> <input type='button' name='butt[]' value='ok3'/> <input type='button' name='butt[]' value='ok4'/> <form> <script> window.onload = function () { function index(element, collection) { var len = collection.length; for (var i = 0; i < len; i++) { if (element == collection[i]) { return i; } } } document.getElementById('form').onclick = function (e) { var e = e || event; var target = e.target || e.srcElement; if (target.type == 'button') { alert(index(target, document.getElementsByName('butt[]'))); } } } </script> Цитата:
см. ненавязчивый javascript |
Цитата:
|
Цитата:
<script> function ins(e){ var o = document.getElementsByName('butt[]'); var l = o.length; for (i=0; i<l; i++){ if (o[i] == e) {var ind = i; break;} } alert ('Индекс ' + ind); } </script> <input type='button' name='butt[]' value='ok' onclick='ins(this)'/> <input type='button' name='butt[]' value='ok' onclick='ins(this)'/> <input type='button' name='butt[]' value='ok' onclick='ins(this)'/> <input type='button' name='butt[]' value='ok' onclick='ins(this)'/> <input type='button' name='butt[]' value='ok' onclick='ins(this)'/> <input type='button' name='butt[]' value='ok' onclick='ins(this)'/> |
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 14:01. |