Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Правильное написание кода (https://javascript.ru/forum/events/53644-pravilnoe-napisanie-koda.html)

genny45 12.02.2015 08:27

Правильное написание кода
 
Здравствуйте.
Такая ситуация, на странице имеются радио кнопки, при нажатии на которые выводится значение input.

Вот так все работает отлично (групп в примере 3, но будет около 20):
Вот пример скрипта ниже: http://agroachtuba.ru/testing/index2.php

<script>
window.onclick = function onclickRadio1() {
  var nameRadio1 = document.getElementsByName('nameRadio1');
  var nameRadio2 = document.getElementsByName('nameRadio2');
  var nameRadio3 = document.getElementsByName('nameRadio3');

  for (var i = 0; i < nameRadio1.length; i++) {
    if (nameRadio1[i].type === 'radio' && nameRadio1[i].checked) {
        rezultatRadio1 = nameRadio1[i].value;       
    }
  }
  
 for (var i = 0; i < nameRadio2.length; i++) {
    if (nameRadio2[i].type === 'radio' && nameRadio2[i].checked) {
        rezultatRadio2 = nameRadio2[i].value;       
    }
  }

 for (var i = 0; i < nameRadio3.length; i++) {
    if (nameRadio3[i].type === 'radio' && nameRadio3[i].checked) {
        rezultatRadio3 = nameRadio3[i].value;       
    }
  }

  document.getElementById('result1').innerHTML = rezultatRadio1;
  document.getElementById('result2').innerHTML = rezultatRadio2;
  document.getElementById('result3').innerHTML = rezultatRadio3; 
}
</script>


<form>
	<div class="element-textarea2">
	<input type="radio" id="dplcment-01" name="nameRadio1" value="28" checked="checked"/>
	<input type="radio" id="dplcment-02" name="nameRadio1" value="38"/>
	<input type="radio" id="dplcment-03" name="nameRadio1" value="65"/>
</div>
	<span class="price" id="result1">28</span>
</form>

<form>
	<div class="element-textarea2">
	<input type="radio" id="dplcment-01" name="nameRadio2" value="10" checked="checked"/>
	<input type="radio" id="dplcment-02" name="nameRadio2" value="20"/>
	<input type="radio" id="dplcment-03" name="nameRadio2" value="30"/>
</div>
	<span class="price" id="result2">10</span>
</form>

<form>
	<div class="element-textarea2">
	<input type="radio" id="dplcment-01" name="nameRadio3" value="12" checked="checked"/>
	<input type="radio" id="dplcment-02" name="nameRadio3" value="13"/>
	<input type="radio" id="dplcment-03" name="nameRadio3" value="14"/>
</div>
	<span class="price" id="result3">12</span>
</form>


Все отлично при нажатии на радио подставляется в span с id = result


Но, с точки зрения программирования, этот не "код":
Как сделать его более "правильным":


Помогите пожалуйста форумчане!

рони 12.02.2015 11:07

genny45,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
<script>
window.onclick = function onclickRadio1(event) {
  var el = event.target;
  if (el.type && el.type === 'radio' && el.checked)
  el.form.querySelector('.price').innerHTML = el.value
}
</script>
<form>
	<div class="element-textarea2">
	<input type="radio" id="dplcment-01" name="nameRadio1" value="28" checked="checked"/>
	<input type="radio" id="dplcment-02" name="nameRadio1" value="38"/>
	<input type="radio" id="dplcment-03" name="nameRadio1" value="65"/>
</div>
	<span class="price" id="result1">28</span>
</form>

<form>
	<div class="element-textarea2">
	<input type="radio" id="dplcment-01" name="nameRadio2" value="10" checked="checked"/>
	<input type="radio" id="dplcment-02" name="nameRadio2" value="20"/>
	<input type="radio" id="dplcment-03" name="nameRadio2" value="30"/>
</div>
	<span class="price" id="result2">10</span>
</form>

<form>
	<div class="element-textarea2">
	<input type="radio" id="dplcment-01" name="nameRadio3" value="12" checked="checked"/>
	<input type="radio" id="dplcment-02" name="nameRadio3" value="13"/>
	<input type="radio" id="dplcment-03" name="nameRadio3" value="14"/>
</div>
	<span class="price" id="result3">12</span>
</form>

</body>

</html>

ksa 12.02.2015 11:13

Цитата:

Сообщение от genny45
Как сделать его более "правильным"

Лучше использовать саму разметку. Это поможет добавть циклы в обработку данных.
Для этого понадобятся массивы... Для более сложных данных добавятся объекты...

Сколько у тебя радио груп? Ровно столько, сколько элементов с классом element-textarea2.
Значит три твоих цикла превращаются в один, но вложенный в другой. А переменные типа rezultatRadioN в массив rezultatRadio...

genny45 12.02.2015 15:51

Спасибо огромное!
Вы мне очень помогли!


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