13.03.2013, 17:17
|
Интересующийся
|
|
Регистрация: 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>
. . . . .
|
|
13.03.2013, 18:11
|
|
Интересующийся
|
|
Регистрация: 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 изменяй на '' только одно нужное тебе значение.
|
|
13.03.2013, 18:12
|
|
Профессор
|
|
Регистрация: 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>
|
|
13.03.2013, 18:13
|
без статуса
|
|
Регистрация: 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.
|
|
13.03.2013, 18:19
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Оу, даже с элементами криптографии ) Круто, че )
|
|
13.03.2013, 18:36
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
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>
|
|
13.03.2013, 18:36
|
Интересующийся
|
|
Регистрация: 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
|
|
13.03.2013, 18:39
|
Интересующийся
|
|
Регистрация: 18.02.2013
Сообщений: 22
|
|
столько вариантов аж глаза разбегаются))
|
|
13.03.2013, 19:05
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
У рони самый простой и быстрый вариант. Можно еще отвязаться от id-шника auto через c.value
|
|
13.03.2013, 19:07
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от nurik2120
|
хотелось бы узнать как добавить тут еще один пункт
|
Наверно в elemId и в obj
в obj - число знаков 00000 - соответствует колву элементов в elemId
1 - у которого .style.display = '';
|
|
|
|