Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   отключить элементы (https://javascript.ru/forum/misc/47525-otklyuchit-ehlementy.html)

promo 27.05.2014 13:19

отключить элементы
 
Добрый день, столкнулся с такой проблеймой :help:
вообще есть
val = выбранная опция из селекта

она включает выбранный элемент
if (val >= 0)
	{
		var service = document.getElementById('srv'+val);
		service.style.display = 'block';
	}

как сделать чтоб отключить все остальные то бишь
('srv'+val) это включаемый элемент val цыфры
если выбран элемент 1 то ему присваивается display = 'block';
а все что меньше 1 или больше присваивается display = 'none';

заранее спасибо!

весь код
function calc()
{
	var sel = document.getElementById("votr"); // Получаем наш список
	var val = sel.options[sel.selectedIndex].value; // Получаем значение выделенного элемента (в нашем случае fruit2).
	
	if (val >= 0)
	{
		var service = document.getElementById('srv'+val);
		service.style.display = 'block';
	}
}

рони 27.05.2014 13:24

promo,
обходить все элементы и присваивать стиль -- совпадает индекс 'block' иначе 'none'

promo 27.05.2014 13:31

А пример можно, как лучше!

WorM32 27.05.2014 13:49

for (var i = 0, l = sel.options.length; i < l; i++) {
    var el = document.getElementById('src' + sel.options[i].value);
    if (i == sel.selectedIndex) {
         el.style.display = 'block';
    } else {
         el.style.display = 'none';
    }
}

promo 27.05.2014 13:57

ошибка

строка el.style.display = 'none';

весь код сейчас
function calc()
{
	var sel = document.getElementById("votr"); // Получаем наш список
	var val = sel.options[sel.selectedIndex].value; // Получаем значение выделенного элемента (в нашем случае fruit2).
	var csrv1 = document.getElementById('srv'+val);
	var cost = csrv1.value;
	str_v=cost.replace(/[_#]+/,' ').replace(/  +/, ' ');
	var reg=/([0-9A-Za-z\s\w+]+),([0-9A-Za-z]+)/;
	var arr=reg.exec(str_v);
	
	var term = document.getElementById('term');
	var values = term.value;
	var days = 30;
	
	if (values == '1') { days = 0.70; };
	if (values == '2') { days = 1; };
	if (values == '3') { days = 2; };
	if (values == '4') { days = 3; };
	if (values == '5') { days = 6; };
	
	for (var i = 0, l = sel.options.length; i < l; i++) {
		var el = document.getElementById('srv'+sel.options[i].value);
		if (i == sel.selectedIndex)
		{
			el.style.display = 'block';
		}
		else
		{
			el.style.display = 'none';
		}
	}
	
	if (values == '1') { days = 0.70; };
	if (values == '2') { days = 1; };
	if (values == '3') { days = 2; };
	if (values == '4') { days = 3; };
	if (values == '5') { days = 6; };
	
	var costnew = days * arr[2];
	var cena = document.getElementById('cena');
	if(costnew > 0)
	{
	cena.innerHTML = costnew;
	}
	else
	{
	cena.innerHTML = "0";
	}
}

рони 27.05.2014 14:00

promo,
добавьте проверку на существование элемента
el && (el.style.display = 'block');
el && (el.style.display = 'none');

promo 27.05.2014 14:07

Цитата:

Сообщение от рони (Сообщение 313666)
promo,
добавьте проверку на существование элемента
el && (el.style.display = 'block');
el && (el.style.display = 'none');

Помогло огромное спасибо! :) :) :)


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