Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.03.2013, 17:17
Интересующийся
Отправить личное сообщение для nurik2120 Посмотреть профиль Найти все сообщения от nurik2120
 
Регистрация: 18.02.2013
Сообщений: 22

Уменьшить размер скрипта
Доброго времени суток не подскажите как уменьшить размер скрипта а то еще добавить надо десять блоков и тогда скрипт будет огромным
вот сам скрипт
function toggle(switchElement) {
 
  var avto = document.getElementById('avto');
  var moto = document.getElementById('moto');
  var shlemi = document.getElementById('shlemi');
  var furgon_do = document.getElementById('furgon_do');
  var gruz_sv = document.getElementById('gruz_sv');
    if (switchElement.value == 'avto') {
      avto.style.display = '';
      moto.style.display = 'none';
	  shlemi.style.display = 'none';
	  furgon_do.style.display = 'none';
	  gruz_sv.style.display = 'none';
    }
    else if (switchElement.value == 'moto') {
      avto.style.display = 'none';
	  shlemi.style.display = 'none';
	  furgon_do.style.display = 'none';
      moto.style.display = '';
	  gruz_sv.style.display = 'none';
    }
	else if (switchElement.value == 'shlemi') {
      avto.style.display = 'none';
	  shlemi.style.display = '';
      moto.style.display = 'none';
	  furgon_do.style.display = 'none';
	  gruz_sv.style.display = 'none';
    }
	else if (switchElement.value == 'furgon_do') {
      avto.style.display = 'none';
	  shlemi.style.display = 'none';
      moto.style.display = 'none';
	  furgon_do.style.display = '';
	  gruz_sv.style.display = 'none';
    }
	else if (switchElement.value == 'gruz_sv') {
      avto.style.display = 'none';
	  shlemi.style.display = 'none';
      moto.style.display = 'none';
	  furgon_do.style.display = 'none';
	  gruz_sv.style.display = '';
    }
	else if (switchElement.value != 'moto' && switchElement.value != 'avto') {
      avto.style.display = 'none';
     moto.style.display = 'none';
    }
  }

вот html
<select name="select_left"  size="1" id="select_left_id" onChange="toggle(this);">
			<option selected="selected" value="avto" onClick="toggle(this);">Автомобили</option>
			<option value="moto" onClick="toggle(this);">Мотоциклы</option>
			<option value="shlemi" onClick="toggle(this);">Одежда шлемы</option>
			<option value="furgon_do" onClick="toggle(this);">Фургоны, грузовые автомобили до 7,5т</option>
			<option value="gruz_sv" onClick="toggle(this);">Грузовые автомобили свыше 7,5т</option>
			</select>
<div id="avto" style="display: block;">...</div>
<div id="moto" style="display: none;">...</div>
. . . . .
Ответить с цитированием
  #2 (permalink)  
Старый 13.03.2013, 18:11
Аватар для Akalenik
Интересующийся
Отправить личное сообщение для Akalenik Посмотреть профиль Найти все сообщения от Akalenik
 
Регистрация: 05.03.2013
Сообщений: 20

Объяви изначально при вызове функции все *.style.display в none:

avto.style.display = 'none';
moto.style.display = 'none';
shlemi.style.display = 'none';
furgon_do.style.display = 'none';
gruz_sv.style.display = 'none';


А дальше при else/if изменяй на '' только одно нужное тебе значение.
Ответить с цитированием
  #3 (permalink)  
Старый 13.03.2013, 18:12
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

<select name="select_left"  size="1" id="select_left_id">
    <option selected="selected" value="avto">Автомобили</option>
    <option value="moto">Мотоциклы</option>
    <option value="shlemi">Одежда шлемы</option>
    <option value="furgon_do">Фургоны, грузовые автомобили до 7,5т</option>
    <option value="gruz_sv">Грузовые автомобили свыше 7,5т</option>
</select>
<script>
(function(){
    var select = document.getElementById('select_left_id');
    select.onchange = function(){
        for (var i = 0, option; option = select[i]; i++) {
            var block = document.getElementById(option.value);
            block.style.display = option.selected ? 'block' : 'none';
        }
    }
})();
</script>
<div id="avto" style="display: block;">avto</div>
<div id="moto" style="display: none;">moto</div>
<div id="shlemi" style="display: none;">shlemi</div>
<div id="furgon_do" style="display: none;">furgon_do</div>
<div id="gruz_sv" style="display: none;">gruz_sv</div>
Ответить с цитированием
  #4 (permalink)  
Старый 13.03.2013, 18:13
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

function toggle(val) {
 var elemId =['avto','moto','shlemi','furgon_do','gruz_sv'];
 function setToddle(a) {
    for(var i=0;i<elemId.length;i++) {
        var tmp=(!+a[i]) ? 'none':'';
        document.getElementById(elemId[i]).style.display=tmp;
    }
 }

 var obj = {
	   avto:    	'10000',
	   moto:    	'01000',
	   shlemi:  	'00100',
	   furgon_do:	'00010',
	   gruz_sv: 	'00001',
	   esly_else: 	'00'
    }

 for(var key in obj) {
        if(val==key) {
	  var setArray = obj[key].split('');setToddle(setArray);return;
        }

 }
	  var setArray = obj.esly_else.split('');setToddle(setArray);//если соответствует 'else'

}

Последний раз редактировалось Deff, 13.03.2013 в 20:17.
Ответить с цитированием
  #5 (permalink)  
Старый 13.03.2013, 18:19
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Оу, даже с элементами криптографии ) Круто, че )
Ответить с цитированием
  #6 (permalink)  
Старый 13.03.2013, 18:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

nurik2120,
Вариант ...
<!DOCTYPE HTML>
<html>
<head>
  <title></title>
<meta charset="utf-8" />
</head>
<body>
<select name="select_left"  size="1" id="select_left_id">
    <option selected="selected" value="avto">Автомобили</option>
    <option value="moto">Мотоциклы</option>
    <option value="shlemi">Одежда шлемы</option>
    <option value="furgon_do">Фургоны, грузовые автомобили до 7,5т</option>
    <option value="gruz_sv">Грузовые автомобили свыше 7,5т</option>
</select>
<div id="avto" style="display: block;">avto</div>
<div id="moto" style="display: none;">moto</div>
<div id="shlemi" style="display: none;">shlemi</div>
<div id="furgon_do" style="display: none;">furgon_do</div>
<div id="gruz_sv" style="display: none;">gruz_sv</div>
<script>
(function () {
    var c = document.getElementById("select_left_id"),
        a = document.getElementById("avto");
    c.onchange = function () {
        var b = document.getElementById(this.value);
        b.style.display = "block";
        a.style.display = "none";
        a = b
    }
})();
</script>
</body>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 13.03.2013, 18:36
Интересующийся
Отправить личное сообщение для nurik2120 Посмотреть профиль Найти все сообщения от nurik2120
 
Регистрация: 18.02.2013
Сообщений: 22

var setElem =[avto,shlemi,furgon_do.,moto,gruz_sv]

оказалось тут точка лишняя )) а так всем спасибо хотелось бы узнать как добавить тут еще один пункт
11 avto:'10000',
12 moto:'00010',
13 shlemi:'01000',
14 furgon_do:'00010',
15 gruz_sv:'00001
Ответить с цитированием
  #8 (permalink)  
Старый 13.03.2013, 18:39
Интересующийся
Отправить личное сообщение для nurik2120 Посмотреть профиль Найти все сообщения от nurik2120
 
Регистрация: 18.02.2013
Сообщений: 22

столько вариантов аж глаза разбегаются))
Ответить с цитированием
  #9 (permalink)  
Старый 13.03.2013, 19:05
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

У рони самый простой и быстрый вариант. Можно еще отвязаться от id-шника auto через c.value
Ответить с цитированием
  #10 (permalink)  
Старый 13.03.2013, 19:07
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от nurik2120
хотелось бы узнать как добавить тут еще один пункт
Наверно в elemId и в obj
в obj - число знаков 00000 - соответствует колву элементов в elemId
1 - у которого .style.display = '';
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очистка и объеснение скрипта Diferen404 Общие вопросы Javascript 4 11.02.2013 16:02
Как узнать размер загружаемого файла? shkarbatov Серверные языки и технологии 5 14.08.2011 17:12
Как уменьшить размер фотографии при выводе??? PAMAC Серверные языки и технологии 4 24.08.2010 19:37
Как изменить размер картинки? Mihail Общие вопросы Javascript 1 25.10.2009 13:42
Блок переключения меню на JS, два скрипта в одном файле Dizeloid Элементы интерфейса 0 30.07.2009 12:03