#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
#6 03.01.06 01:41
Re: (javascript)Меняющийся список и selected
ха..молодец..... тока дело то в синтаксисе ..да и обьектными вещами не сильно дружу))...просто я же не знаю все свойства, инет выдал кучу фуфла...
ЗЫ: а их я различаю, и про сервлеты и про аплеты, и про мидлеты....много что знаю..но не умею пользоваться, пока по крайней мере.
ЗЫЫ: а не дописил потому что писал во второй раз..и не дописал.... можно было бы и не придераться ;-)
Offline

