Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kasowanie optionów w selekcie
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
TomASS
Witam. Mam sobie jakiegoś tam div'a:
  1. <div id="divek">
  2.  
  3. </div>

I teraz przy pomocy funkcji JavaScript tworzę w nim selecty:
Kod
function make_select(div,numer,aNames,aValues){
    var select = document.createElement("select");
    select.name = "przeladunek_z["+numer+"][]";
    
    var br = document.createElement("br");
    $(div).appendChild(br);
    $(div).appendChild(select);    
    fill_select(select,aNames,aValues);
}

Gdzie div to nazwa div'a w którym tworzymy selecta, numer to numer w nazwie oraz tabele aNames oraz aValues - jakimi danymi mam je wypełnić. Na końcu jest funkcja wypełniająca nowoutworzony select (fill_select):
Kod
function fill_select(select,aNames,aValues){
    select.options[0] = new Option();
    select.options[0].selected = true;
    for(var i = 0; i < aNames.length; i++) {
        select.options[(i+1)] = new Option(aNames[i],aValues[i]);
    }
}

Teraz zastanawiam się jak do takiego utworzonego przy pomocy JS selecta dodać jakąś funkcję na zadarzenie onChange? próbowalem (w funkcji make_select) dodac select.onChange="funkcja_on_change();"; ale nie działa :/

Nie wiem jak kasować optiony z selectów - nowego tworzy się przy pomocy new Option, ale kasuje? Chciałbym zrobić takie coś, że jak wybiorę jedną opcję w jednym selectie, to ta opcja kasuje sie u pozostałych (wszystkie selecty na początku zawierają te same dane) - już nie mam pojęcia jak to zrobić :/ Może jakaś podpowiedź?
Vogel
Kod
function make_select(div,numer,aNames,aValues){
    var select = document.createElement("select");
    select.name = "przeladunek_z";    
    var br = document.createElement("br");
    $(div).appendChild(br);
    $(div).appendChild(select);
    fill_select(select,aNames,aValues);    
    select.attachEvent('onchange', funkcja)
}


prosz ;]

a. i taki tips na przyszlosc ktory szalenie ulatwia mi uzeranie sie z JS i roznymi wersjami przegladarek:

Kod
for (i in document.getElmenetById('select')) {
document.writeln(i);
}

wyrzuca mi caly obiekt i potem wystarczy tylko przeczesac co z nim da sie a czego sie nie da zrobic winksmiley.jpg

PS. a co to jest te "$(div)" w twym kodzie?
TomASS
Po pierwsze to wielkie dzięki - również za tipsa smile.gif

Cytat
PS. a co to jest te "$(div)" w twym kodzie?

Zapomniałem co to jest funkcja '$()' napisać, już się poprawiam:
Kod
function $(id){
 return document.getElementById(id);
}


Dzięki smile.gif

Jeszcze tylko pozostaje kwestia usunięcia optiona z selecta :/

--------------------------------------------------------edit------------------------------------------------
Niestety takie ło coś nie działa :/
Kod
function $(id){
return document.getElementById(id);
}
function ale(){
    alert('11111');
}



function make_select(div,numer,aNames,aValues,brt){
    var select = document.createElement("select");
    select.name = "przeladunek_z["+numer+"][]";
    
    if(brt){
  var br = document.createElement("br");
  $(div).appendChild(br);
    }
    $(div).appendChild(select);    
    fill_select_wagony(select,aNames,aValues);
    select.attachEvent("onChange", ale);
}

nie wyswietla 1111:/
Pozdrawiam
Vogel
nie "onChange" a "onchange". tutaj latwo sie kopnąć z wielkimi/malymi literami
TomASS
Cytat
nie "onChange" a "onchange". tutaj latwo sie kopnąć z wielkimi/malymi literami


Już to próbowałem.... nic :/
revyag
attachEvent to zdaje się pochodzi z microsoftu.
polecam przjrzenie strony:
http://www.quirksmode.org/js/events_advanced.html
Vogel
hmm... no cos sie zepsulo. ale zamiana z "onChange" na "onchange" jest koniecnza. w kazdym raize na IE i Operze dziala, ale Firefoxa nie udalo mi sie zmusic do wspopracy. Pryzsiade wieczorem...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.