Официальный сайт студ.городка НГТУ
Программирование и БД » (javascript)Меняющийся список и selected 

#1  02.01.06 18:40

(javascript)Меняющийся список и selected

Проблемма такая....не могу сделать так чтобы был по автомату выбран какй-нить элемент списка
я ниче не понимаю в java, вроде посмотрел как надо сделать, но не работает.

почти мой скрипт:)

DynamicOptionList.js

Код::

function DynamicOptionList(){
	if(arguments.length < 2){
		alert("Not enough arguments in DynamicOptionList()");
	}
	this.target = arguments[0];
	this.dependencies = new Array();
	for(var i=1;i<arguments.length;i++){
		this.dependencies[this.dependencies.length] = arguments[i];
		}
	this.form = null;
	this.dependentValues = new Object();
	this.defaultValues = new Object();
	this.options = new Object();
	this.delimiter = "|";
	this.longestString = "";
	this.numberOfOptions = 0;
	this.addOptions = DynamicOptionList_addOptions;
	this.populate = DynamicOptionList_populate;
	this.setDelimiter = DynamicOptionList_setDelimiter;
	this.setDefaultOption = DynamicOptionList_setDefaultOption;
	this.printOptions = DynamicOptionList_printOptions;
	this.init = DynamicOptionList_init;
}
function DynamicOptionList_setDelimiter(val){this.delimiter = val;}
function DynamicOptionList_setDefaultOption(val,condition){
	if(typeof this.defaultValues[condition] == "undefined" || this.defaultValues[condition]==null){
		this.defaultValues[condition] = new Object();
	}
	for(var i=1;i<arguments.length;i++){
		this.defaultValues[condition][arguments[i]]=1;
	}
}
function DynamicOptionList_init(theform){
	this.form = theform;
	this.populate();

	}
function DynamicOptionList_addOptions(dependentValue){
	if(typeof this.options[dependentValue] != "object"){
		this.options[dependentValue] = new Array();
		}
		for(var i=1;i<arguments.length;i+=2){
			if(arguments[i].length > this.longestString.length){
				this.longestString = arguments[i];
			}
			this.numberOfOptions++;
			this.options[dependentValue][this.options[dependentValue].length] = arguments[i];
			this.options[dependentValue][this.options[dependentValue].length] = arguments[i+1];
		}
}
function DynamicOptionList_printOptions(){
	if((navigator.appName == 'Netscape') &&(parseInt(navigator.appVersion) <= 4)){
		var ret = "";
		for(var i=0;i<this.numberOfOptions;i++){
			ret += "<OPTION>";}ret += "<OPTION>"
			for(var i=0;i<this.longestString.length;i++){
				ret += "_";}
			document.writeln(ret);
		}
}
function DynamicOptionList_populate(){
	var theform = this.form;
	var i,j,obj,obj2;
	this.dependentValues = new Object;
	var dependentValuesInitialized = false;
	for(i=0;i<this.dependencies.length;i++){
		var sel = theform[this.dependencies[i]];
		var selName = sel.name;
		if(!dependentValuesInitialized){
			dependentValuesInitialized = true;
			for(j=0;j<sel.options.length;j++){
				if(sel.options[j].selected){
					this.dependentValues[sel.options[j].value] = true;}
			}
		}
		else{
			var tmpList = new Object();
			var newList = new Object();
			for(j=0;j<sel.options.length;j++){
				if(sel.options[j].selected){
					tmpList[sel.options[j].value] = true;
				}
			}
			for(obj in this.dependentValues){
				for(obj2 in tmpList){
					newList[obj + this.delimiter + obj2] = true;
				}
				newList[obj + this.delimiter + "*"] = true;
			}
			this.dependentValues = newList;
		}
	};
	var targetSel = theform[this.target];
	var targetSelected = new Object();
	for(i=0;i<targetSel.options.length;i++){
		if(targetSel.options[i].selected){
			targetSelected[targetSel.options[i].value] = true;
		}
	}
	targetSel.options.length = 0;
	for(i in this.dependentValues){
		if(typeof this.options[i] == "object"){
			var o = this.options[i];
			for(j=0;j<o.length;j+=2){
				var text = o[j];var val = o[j+1];
				targetSel.options[targetSel.options.length] = new Option(text, val, false, false);
				if(typeof this.defaultValues[i] != "undefined" && this.defaultValues[i]!=null){
					for(def in this.defaultValues[i]){
						if(def == val){
							targetSelected[val] = true;
						}
					}
				}
			}
		}
	}
	targetSel.selectedIndex=-1;
	for(i=0;i<targetSel.options.length;i++){
		if(targetSelected[targetSel.options[i].value] != null && targetSelected[targetSel.options[i].value]==true){
			targetSel.options[i].selected = true;
			}
	}
}

html-ка

Код::

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<SCRIPT language=JavaScript src="DynamicOptionList.js"></SCRIPT>
<SCRIPT>
var alist1 = new DynamicOptionList("region","city");
alist1.addOptions("52","Улица1","0");
alist1.addOptions("53","Улица2","1");
alist1.addOptions("55","Улица3","2","Улица4","3");
function ainit() {
	var theform = document.forma;
	alist1.init(theform); 
	}
</SCRIPT>
<FORM action="" method=get name="forma">
<SELECT name="city" onchange=alist1.populate();sortSelect(region);>
	<OPTION value=52>Москва</OPTION>
	<OPTION value=53>Питер</OPTION>
	<OPTION value=55>Новосиб</OPTION>
</SELECT>
		<SELECT  id=select1 name="region" ></SELECT>
		<SCRIPT>ainit();select1.options(1).selected=true; </SCRIPT>
		<input type="SUBMIT">
</FORM>
</BODY></HTML>

Исправлено Stell Hawk (02.01.06 18:42)

Offline

#2  02.01.06 19:07

Re: (javascript)Меняющийся список и selected

Должно помочь

Команда SELECT имеет следующий HTML-формат:



<SELECT атрибуты>
  <OPTION атрибуты>надпись в позиции меню</OPTION>
  ...
  <OPTION атрибуты>надпись в позиции меню</OPTION>
</SELECT>

Внутри пары <SELECT>...</SELECT> располагаются команды <OPTION>...</OPTION>, каждая из которых задает одну позицию меню на экране.

Приведенному выше примеру меню, соответствует такой код:


<SELECT name="menu">
  <OPTION selected>А.Пушкин</OPTION>
  <OPTION>М.Лермонтов</OPTION>
  <OPTION>В.Высоцкий</OPTION>
  <OPTION>О.Какаулин</OPTION>
  <OPTION>Б.Окуджава</OPTION>
</SELECT>



Атрибуты тега SELECT
name -- значением является идентификатор. Имя используется в скриптах для доступа к экземпляру объекта, который создается браузером для тега SELECT.
size -- число видимых строк в меню.


<SELECT name="menu" size="4">
  <OPTION selected>А.Пушкин</OPTION>
  <OPTION>М.Лермонтов</OPTION>
  <OPTION>В.Высоцкий</OPTION>
  <OPTION>О.Какаулин</OPTION>
  <OPTION>Б.Окуджава</OPTION>
</SELECT>




Если атрибут size не задан, он считается равным 1.
Атрибуты тега OPTION
selected -- логический атрибут; для него не указывается значения. Присутствие атрибута означает, что данная позиция меню выбрана по умолчанию.

Offline

#3  02.01.06 19:09

Re: (javascript)Меняющийся список и selected

selectedIndex -- номер выбранной строки меню. Это число совпадает с индексом того элемента массива options, который имеет для свойства selected значение true. Это очень полезное свойство, и оно наиболее часто используется в скриптах.


<FORM>
<SELECT name="menu" size="5">
   <OPTION selected>А.Пушкин</OPTION>
   <OPTION>М.Лермонтов</OPTION>
   <OPTION>В.Высоцкий</OPTION>
   <OPTION>О.Какаулин</OPTION>
   <OPTION>Б.Окуджава</OPTION>
</SELECT>
<INPUT type="button" value="Вы выбрали..." onclick=
       "var ind=this.form.menu.selectedIndex;
        alert(this.form.menu.options[ind].text);">
</FORM>


Чтобы читатель не запутался в перечисленных свойствах, ниже приводится краткая схема. Примеры обращения к свойствам относятся к случаю, когда тег SELECT имеет имя "menu" и расположен внутри формы с именем "forma".

length            document.forma.menu.length
selectedIndex     document.forma.menu.selectedIndex
options           document.forma.menu.options
  text            document.forma.menu.options[0].text
  selected        document.forma.menu.options[0].selected
  defaultSelected document.forma.menu.options[0].defaultSelected

Offline

#4  03.01.06 01:21

Re: (javascript)Меняющийся список и selected

конечно это я и сам мог посотреть)) но и на этом спасибо..разобрался

Код::

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<SCRIPT language=JavaScript src="1/DynamicOptionList.js"></SCRIPT>
<SCRIPT>
var alist1 = new DynamicOptionList("region","city");
alist1.addOptions("52","Улица1","0","Улица0","45");
alist1.addOptions("53","Улица2","1");
alist1.addOptions("55","Улица3","2","Улица4","3");
function ainit() {
	var theform = document.forma;
	alist1.init(theform); 
	
	}
function 		searchselect() {
	var theform = document.forma.region;
	var sel=45;
	   for (var i = 0; i < theform.length; i++) {
	   	      if (theform.options[i].value == sel) {
	   	      	         theform.options[i].selected=true      
	   	      }
	   }	
}
</SCRIPT>
<BODY>
<FORM action="" method=get name="forma">
<SELECT name="city" onchange=alist1.populate();>
	<OPTION value=52>Москва</OPTION>
	<OPTION value=53>Питер</OPTION>
	<OPTION value=55>Новосиб</OPTION>
</SELECT>
		<SELECT  id=select1 name="region" ></SELECT>
				<SCRIPT>ainit();
			searchselect();
			</SCRIPT>
		<input type="SUBMIT">
</FORM>
</BODY></HTML>

Offline

#5  03.01.06 01:25

Re: (javascript)Меняющийся список и selected

Stell Hawk написал(а):

я ниче не понимаю в java

ну видимо и в JavaScript
раз не видишь в них разницы ;)

Offline

#6  03.01.06 01:41

Re: (javascript)Меняющийся список и selected

ха..молодец..... тока дело то в синтаксисе ..да и обьектными вещами  не сильно дружу))...просто я же не знаю все свойства, инет выдал кучу фуфла...
ЗЫ: а их я различаю, и про сервлеты и про аплеты, и про мидлеты....много что знаю..но не умею пользоваться, пока по крайней мере.
ЗЫЫ: а не дописил потому что писал во второй раз..и не дописал.... можно было бы и не придераться ;-)

Offline

#7  03.01.06 01:54

Re: (javascript)Меняющийся список и selected

кстати у меня лежат одни из лучших книжек по хтмл+джаваскрипт+цсс которые я видел от роботландского университета, всяко многим будет инетересно!
ftp://onibaka/book/html&javascript/

Offline

Программирование и БД » (javascript)Меняющийся список и selected 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.474 сек.
Выполнено 14 запросов.