Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Элементарная задача.. (https://javascript.ru/forum/dom-window/29956-ehlementarnaya-zadacha.html)

V2oD2o 18.07.2012 20:45

Элементарная задача..
 
в пхп динамически вываливается много радио кнопок..

echo "<input name=radiobox type=radio id=check".$x.">"


хочу узнать какая именно нажата..

var	check=0;
	for (x=0;x<=7;x++) {
		if (document.getElementById('check'+x).checked==true) { check=x; }
	}
	alert(check);


ошибок нет, а алерт не вываливается.. т.е после цикла ничего не выполняется..

+ еще же как то по полю name можно выцепить порядковый номер радио кнопки?

lord2kim 18.07.2012 20:52

Цитата:

Сообщение от V2oD2o (Сообщение 189762)
в пхп динамически вываливается много радио кнопок..

echo "<input name=radiobox type=radio id=check".$x.">"


хочу узнать какая именно нажата..

var	check=0;
	for (x=0;x<=7;x++) {
		if (document.getElementById('check'+x).checked==true) { check=x; }
	}
	alert(check);


ошибок нет, а алерт не вываливается.. т.е после цикла ничего не выполняется..

+ еще же как то по полю name можно выцепить порядковый номер радио кнопки?

var check = 0;
for (i=0; i < document.getElementsByName("radiobox").length; i++) {
    if (document.getElementsByName("radiobox")[i].checked) { check = i; break; }
}
alert(check);


в вашем случае нужно как то так
var	check=0;
	for (x=0;x<=7;x++) {
		if (document.getElementById('check'+x) && document.getElementById('check'+x).checked) { check=x; }
	}
	alert(check);

V2oD2o 18.07.2012 20:53

спасибо!

devote 18.07.2012 20:57

для нормальных браузеров
<input name=radiobox type=radio id=check1>
<input name=radiobox type=radio id=check2 checked="checked">
<input name=radiobox type=radio id=check3>
<script>
    alert( document.querySelector( 'input[type=radio]:checked' ).id );
</script>


для старых браузеров ИЕ7 например
<input name=radiobox type=radio id=check1>
<input name=radiobox type=radio id=check2 checked="checked">
<input name=radiobox type=radio id=check3>
<script>
    var el, els = document.getElementsByTagName('input');
    for( var i = 0; el = els[ i++ ]; ) {
        if ( el.type == "radio" && el.checked ) {
            break;
        }
    }
    alert( el && el.id );
</script>

bes 19.07.2012 00:08

Если уж совсем много элементов, можно сделать так, чтобы цикл каждый раз не гонять
<div id="div">
  <input name=radiobox type=radio id=check1>
  <input name=radiobox type=radio id=check2 checked="checked">
  <input name=radiobox type=radio id=check3>
</div>

<script>
window.onload = function () {
  var check = 'check2';
  var div = document.getElementById('div');
  div.onchange = function (e) {
    e = e || event;
    var target = e.target || e.srcElement; 
    check = target.id;
    alert(check)
  }
}
</script>

В IE onchange чёт не тянет, тогда onclick

tadjik1 19.07.2012 17:46

bes,
браво, надо показывать правильное решение, а не то, которое похоже не ответ. конечно слушать надо событие, а не гонять в цикле элементы. в ИЕ никогда ончендж не работал, зато онклик работает во всех браузерах, не должно возникнуть проблемы.


Часовой пояс GMT +3, время: 07:03.