Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Условный раскрывающийся список на javascript (https://javascript.ru/forum/dom-window/7500-uslovnyjj-raskryvayushhijjsya-spisok-na-javascript.html)

hizer 04.02.2010 15:33

Условный раскрывающийся список на javascript
 
Доброго времени суток.

Нашел на одном сайте условный раскрывающийся список на javascript, переделал, получилась удобная форма заказа. В этой форме клиент выбирает название продукта, после чего появляются или пропадают другие списки для выбора переметров данного продукта.

Проблемой является то, что клиент за одни раз может заказать только один вид продукции. Нужно чтобы таких условных списков было 3. При размножении таких списков, работающим является только один.:-? ID списков и названия функций я изменял для каждого списка, все безрезультатно.
Буду рад любому совету.:thanks:

Код одного условного списка
<html>  
<head>
<title> spisok</title>
 <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">   
</head>
<body>
<center> 
<table  >
 <tr>
  <td>
  <FORM name=frm1 id=frm1 ACTION="mail_form_2.php" METHOD="POST" > 
<select name="menu1" onChange="setvaluecontact1();"> 
<option value="empt"> </option>
<option value='1'>животные1
<option value='2'>фрукты1
<option value='3'>конфеты1
</select>
 </td> </tr>
 <tr><td id=animal>   
<select name=""> 
<option selected value=''> 
 <option value='2'>кот
 <option value='2'>собака
 <option value='2'>хомяк
</select> 
 </tr>  
 </td>
  <tr>
 <td id=fruit>  
 <select name=""  > 
<option selected value=''> 
 <option value='2'>апельсин
 <option value='2'>мандарин
 <option value='2'>банан
</select> </td>  
  </tr>
  <tr><td id=candy>  
 <select name=""  > 
<option selected value=''> 
 <option value='2'>кара-кум
 <option value='2'>белочка
 <option value='2'>ням-ням
 </td>
  </tr>
</table> 
 </form> 
 <script type="text/javascript" language="JavaScript" src="contact_1.js"></script>  
 
</body>
</html>


contact_1.js
if (window.navigator.userAgent.indexOf ("Opera") >= 0 || window.navigator.userAgent.indexOf ("Gecko") >= 0){
	ua = 'Netscape';
}else{
	ua = 'Explorer';
}
document.frm1.menu1.focus();
claerdisabled=false;

b1=['animal']
b2=['fruit'];
b3=['candy'];

 
function show(ar){
	if (ua=='Explorer'){
		document.getElementById(ar[0]).style.display='block';
	}else{
		document.getElementById(ar[0]).style.display='table-row';
	}
}

function hidde(ar){
	document.getElementById(ar[0]).style.display='none';
}

function setvaluecontact1(){
	claerdisabled=false;
	if (document.frm1.menu1.selectedIndex==1){
	 	show(b1);
		hidde(b2);
		hidde(b3);
		claerdisabled=true;
	}else if (document.frm1.menu1.selectedIndex==2){
	     hidde(b1); 
		 show(b2);
		 hidde(b3);
		 hidde(b4);
		claerdisabled=true; 
	}
	else if (document.frm1.menu1.selectedIndex==3){
	      hidde(b1); 
		  hidde(b2);
		 show(b3);
		claerdisabled=true; 
	}
	 
	initcontact_1();
}
function initcontact_1(){
	if(claerdisabled){
		document.frm1.add.disabled=false;
	}else{
		for(i=1;i<=4;i++){
			b='b'+i;
			b=eval(b);
			hidde(b);
		}
		document.frm1.add.disabled=true;
	}
}

initcontact_1();

Gvozd 04.02.2010 15:52

на первый взгляд, вам надо создать другой набор переменных b1,b2, b3, с другими именами, и изменить ф-ции setvaluecontact1() и initcontact_1() чтобы они использовали другой набор переменных
на нулевой же взгляд, вам следует выкинуть этот скрипт, потому что он морально устарел, не говоря о маразматичности кода, даже по тем временам

hizer 04.02.2010 16:23

Цитата:

Сообщение от Gvozd (Сообщение 43558)
на первый взгляд, вам надо создать другой набор переменных b1,b2, b3, с другими именами, и изменить ф-ции setvaluecontact1() и initcontact_1() чтобы они использовали другой набор переменных

Сразу так и сделал - не помогло.

Gvozd 04.02.2010 16:31

тогда последуй нулевому совету, и выкинь этот скрипт, написав/найдя гораздо более свежий, и лучший по качеству
у меня копаться в этом скрипте желания нету. это сродни некрофилии

hizer 04.02.2010 16:57

Gvozd,
вам известны примеры или методы решения данной задачи?

Gvozd 04.02.2010 17:15

их полным-полно вокруг.
на форуме тема динамических списков, уже ни раз поднималась.
в гугле также.
я уж не говорю о том, что это достаточно легко пишется, если приложить усилия


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