Показать сообщение отдельно
  #20 (permalink)  
Старый 20.02.2018, 21:52
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
		<button>-</button><input type="text"><button>+</button><br>
	<button>-</button><input type="text" class="san"><button>+</button><br>
	<button>-</button><input type="text" class="san"><button>+</button><br>
	<button>-</button><input type="text" class="kom"><button>+</button><br>
	<button>-</button><input type="text"><button>+</button><br>
	<button>-</button><input type="text" class="chas"><button>+</button><br>
	<button>-</button><input type="text"><button>+</button><br>
	<script>

		var sklon = (n, obj) => n+" "+obj[(n%100>4 && n%100<20)?2:[2, 0, 1, 1, 1, 2][(n%10<5)?n%10:5]];

		var obj = {kom:['комната', 'комнаты', 'комнат'],
							san:['санузел', 'санузла', 'санузлов'],
							chas:['час', 'часа', 'часов']},
		inp = document.querySelectorAll('.san, .kom, .chas');
		inp.forEach((el, i)=>{
			el.value = 0;
			var val, cl = el.className;
			el.previousElementSibling.onclick = e => {
				val = parseInt(el.value);
				if (val > 0) val--;
				el.value = sklon(val, obj[cl]);
			};
			el.nextElementSibling.onclick = e => {
				val = parseInt(el.value);
				val++;
				el.value = sklon(val, obj[cl]);
			};
			el.onchange = e => {
				val = parseInt(el.value);
				e.target.value = sklon(val, obj[cl]);
			};
		});

	</script>
</body>
</html>


вместо класса можно использовать любые другие доступные атрибуты.

Последний раз редактировалось j0hnik, 20.02.2018 в 22:01.
Ответить с цитированием