Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.02.2015, 08:27
Новичок на форуме
Отправить личное сообщение для genny45 Посмотреть профиль Найти все сообщения от genny45
 
Регистрация: 11.02.2015
Сообщений: 3

Правильное написание кода
Здравствуйте.
Такая ситуация, на странице имеются радио кнопки, при нажатии на которые выводится значение 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


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


Помогите пожалуйста форумчане!
Ответить с цитированием
  #2 (permalink)  
Старый 12.02.2015, 11:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

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>
Ответить с цитированием
  #3 (permalink)  
Старый 12.02.2015, 11:13
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

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

Сколько у тебя радио груп? Ровно столько, сколько элементов с классом element-textarea2.
Значит три твоих цикла превращаются в один, но вложенный в другой. А переменные типа rezultatRadioN в массив rezultatRadio...
Ответить с цитированием
  #4 (permalink)  
Старый 12.02.2015, 15:51
Новичок на форуме
Отправить личное сообщение для genny45 Посмотреть профиль Найти все сообщения от genny45
 
Регистрация: 11.02.2015
Сообщений: 3

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка HTML кода и JS кода через innerHTML zhurchik AJAX и COMET 1 31.10.2014 17:32
Как визуализировать структуру кода? dkudrin Общие вопросы Javascript 2 22.08.2014 19:12
скрыть из исходного кода часть javascript кода. javasc Javascript под браузер 10 12.03.2014 09:32
Удаление участка кода replace Dorian_bs Общие вопросы Javascript 3 23.11.2012 23:19
Пример кода сохранения в базу html страницы генерированного посредством JavaScripts wayzer Серверные языки и технологии 2 06.09.2012 16:46