Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.09.2016, 12:55
Интересующийся
Отправить личное сообщение для mikhael Посмотреть профиль Найти все сообщения от mikhael
 
Регистрация: 11.07.2016
Сообщений: 15

Как сократить код используя цикл?
Есть такой код js:
var otvet4 = document.getElementById('edit-submitted-4otvet');
var rez4 = document.getElementById('edit-submitted-4rez');			
otvet4.oninput = function(){					
	if (otvet4.value == 40) {
		rez4.value = 1;
	}
	else{
		rez4.value = 0;
	}
}
				
var otvet5 = document.getElementById('edit-submitted-5otvet');
var rez5 = document.getElementById('edit-submitted-5rez');
otvet5.oninput = function(){
	if (otvet5.value == 25) {
		rez5.value = 1;
	}
	else{
		rez5.value = 0;
	}
}

var otvet6 = document.getElementById('edit-submitted-6otvet');
var rez6 = document.getElementById('edit-submitted-6rez');
otvet6.oninput = function(){
	if (otvet6.value == 45) {
		rez6.value = 1;
	}
	else{
		rez6.value = 0;
	}
}

var otvet7 = document.getElementById('edit-submitted-7otvet');
var rez7 = document.getElementById('edit-submitted-7rez');
otvet7.oninput = function(){
	if (otvet7.value == 310) {
		rez7.value = 1;
	}
	else{
		rez7.value = 0;
	}
}

var otvet8 = document.getElementById('edit-submitted-8otvet');
var rez8 = document.getElementById('edit-submitted-8rez');
otvet8.oninput = function(){
	if (otvet8.value == 70) {
		rez8.value = 1;
	}
	else{
		rez8.value = 0;
	}
}

<form>
<div class="form-item webform-component webform-component-number webform-component--4otvet webform-container-inline form-group form-inline form-item form-item-submitted-4otvet form-type-webform-number form-group"> <label class="control-label" for="edit-submitted-4otvet">Ответ</label>
<input class="form-control form-text form-number" type="text" id="edit-submitted-4otvet" name="submitted[4otvet]" step="1"></div>
<div class="form-item webform-component webform-component-number webform-component--4rez webform-container-inline form-group form-inline form-item form-item-submitted-4rez form-type-webform-number form-group"> <label class="control-label" for="edit-submitted-4rez">4rez</label>
<input class="form-control form-text form-number" type="text" id="edit-submitted-4rez" name="submitted[4rez]" value="0" step="1"></div>
..........
<div class="form-item webform-component webform-component-number webform-component--8otvet webform-container-inline form-group form-inline form-item form-item-submitted-8otvet form-type-webform-number form-group"> <label class="control-label" for="edit-submitted-8otvet">Ответ</label>
<input class="form-control form-text form-number" type="text" id="edit-submitted-8otvet" name="submitted[8otvet]" step="1"></div>
<div class="form-item webform-component webform-component-number webform-component--8rez webform-container-inline form-group form-inline form-item form-item-submitted-8rez form-type-webform-number form-group"> <label class="control-label" for="edit-submitted-8rez">8rez</label>
<input class="form-control form-text form-number" type="text" id="edit-submitted-8rez" name="submitted[8rez]" value="0" step="1"></div>
</form>

Смысл кода в том, что есть поля input расположены по парно, если введенное значение соответствует нужному, то в другом поле ставить 1, если не правильно то 0.

Последний раз редактировалось mikhael, 14.09.2016 в 14:29.
Ответить с цитированием
  #2 (permalink)  
Старый 14.09.2016, 13:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

mikhael,
для медитации, ввести 40 в 1 инпут
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>

  <script>
 window.addEventListener("DOMContentLoaded", function() {
    var b = document.querySelectorAll(".form-control.form-text.form-number");
    [40, 25, 45, 310, 70].forEach(function(c, a) {
        a *= 2;
        b[a] && b[a].addEventListener("input", function() {
            b[a + 1].value = +(this.value == c)
        })
    })
});
  </script>
</head>

<body>

<input class="form-control form-text form-number" type="text" id="edit-submitted-4otvet" name="submitted[4otvet]" step="1">
<input class="form-control form-text form-number" type="text" id="edit-submitted-4rez" name="submitted[4rez]" value="0" step="1">


</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 14.09.2016, 14:31
Интересующийся
Отправить личное сообщение для mikhael Посмотреть профиль Найти все сообщения от mikhael
 
Регистрация: 11.07.2016
Сообщений: 15

Здравствуйте, Рони.
Наверное, я не совсем точно дал описание, думаю теперь понятнее.
Ответить с цитированием
  #4 (permalink)  
Старый 14.09.2016, 14:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от mikhael
Наверное, я не совсем точно дал описание, думаю теперь понятнее.
и что это меняет?
Ответить с цитированием
  #5 (permalink)  
Старый 14.09.2016, 14:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

mikhael,
впишите нужные значения в массив и всё
Ответить с цитированием
  #6 (permalink)  
Старый 14.09.2016, 15:05
Интересующийся
Отправить личное сообщение для mikhael Посмотреть профиль Найти все сообщения от mikhael
 
Регистрация: 11.07.2016
Сообщений: 15

Что-то не работает
Ответить с цитированием
  #7 (permalink)  
Старый 14.09.2016, 15:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

mikhael,
где код?
Ответить с цитированием
  #8 (permalink)  
Старый 14.09.2016, 15:11
Интересующийся
Отправить личное сообщение для mikhael Посмотреть профиль Найти все сообщения от mikhael
 
Регистрация: 11.07.2016
Сообщений: 15

window.addEventListener("DOMContentLoaded", function() {
				var b = document.querySelectorAll(".form-control.form-text.form-number");
				[40, 25, 45, 310, 70].forEach(function(c, a) {
					a *= 2;
					b[a] && b[a].addEventListener("input", function() {
						b[a + 1].value = +(this.value == c);

					})
				})
			});

вот этот код в отдельном файле
Ответить с цитированием
  #9 (permalink)  
Старый 14.09.2016, 15:14
Интересующийся
Отправить личное сообщение для mikhael Посмотреть профиль Найти все сообщения от mikhael
 
Регистрация: 11.07.2016
Сообщений: 15

пробовал через перебор свойств for..in, что-то не получилось
Ответить с цитированием
  #10 (permalink)  
Старый 14.09.2016, 15:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от mikhael
вот этот код в отдельном файле
попробуйте убрать строки 1 и 10 -- одному вам известно как вы его запускаите.
если код здесь работает, то и у вас будет работать!!! либо у вас всё иначе, чем в 1 посте
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объясните как работет этот код? lexapiter25 jQuery 24 26.05.2016 13:31
Как правильно организовать код? karssen Общие вопросы Javascript 8 13.12.2015 21:47
Как можно сократить код? allanmiln Events/DOM/Window 2 08.02.2013 14:41
Как найти исходный код AS3 внутри FLA файла? Gamestop Flash 7 12.01.2013 13:57
Запуск кода с фрейма, код в родительском окне - КАК ? lamer Javascript под браузер 7 06.05.2012 15:15