Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [js]Tworzenie nowej listy z listy
skowron-line
post
Post #1





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Witam chcialbym utworzyc nowy obiekt typu <select> w oparciu o juz istniejacy, niby dosyc proste ale jednak.
kod
  1. <head>
  2. <script type="text/javascript">
  3. function showOptions(){
  4. var oList = document.getElementById('abc');
  5. var oDiv = document.getElementById('oDiv');
  6. var select = document.createElement('select');
  7. for(var i=0; i<=oList.length; i++){
  8. // alert(oList.options[i].value);
  9. // oListValue = oList.options[i].value;
  10. //oListText = oList.options[i].text;
  11. option = document.createElement('option');
  12. option.setAttribute('value',oList.options[i].value);
  13. var optionText = document.createTextNode(oList.options[i].text);
  14. option.appendChild(optionText);
  15. select.appendChild(option);
  16. }
  17. oDiv.appendChild(select);
  18. }
  19. </script>
  20. </head>
  21. <body onLoad="showOptions();">
  22. <select id="abc">
  23. <option value="a">ab</option>
  24. <option value="b">bc</option>
  25. <option value="c">cd</option>
  26. </select>
  27. <div id="oDiv"></div>
  28. </body>
  29. </html>

problem wyglada nastepujaco.
Kod
Error: oList.options[i] has no properties
Source File: file:///C:/AppServ/www/javascript/selectOptions.html
Line: 13

ale jak odkomentuje alerta to elegancko wywali on wszystkie wartosci tej listy


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
Revan
post
Post #2





Grupa: Zarejestrowani
Postów: 49
Pomógł: 0
Dołączył: 21.03.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Chodzi o zwykłe skopiowanie elementu? Z użyciem jQuery może to wyglądać zupełnie tak:
Kod
$('#abc').clone(true).appendTo('#oDiv');
Go to the top of the page
+Quote Post
skowron-line
post
Post #3





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Cytat(Revan @ 22.11.2007, 15:42:08 ) *
Chodzi o zwykłe skopiowanie elementu? Z użyciem jQuery może to wyglądać zupełnie tak:
Kod
$('#abc').clone(true).appendTo('#oDiv');

Cytat
Z użyciem jQuery
ale ja nie wspominalem ze chce to zrobic przy uzyciu jQuery


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
BaN
post
Post #4





Grupa: Zarejestrowani
Postów: 158
Pomógł: 43
Dołączył: 9.11.2007

Ostrzeżenie: (0%)
-----


Powinno działać:
Kod
function showOptions(){
     var select = document.createElement('select');
     var oList = document.getElementById('abc');
     var oDiv = document.getElementById('oDiv');
     for(var i=0,n=oList.length; i<n; i++){
       option = document.createElement('option');
       option.setAttribute('value',oList.options[i].value);
       option.appendChild(document.createTextNode(oList.options[i].text));
       select.appendChild(option);
     }
     oDiv.appendChild(select);
   }
Go to the top of the page
+Quote Post
skowron-line
post
Post #5





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Mam cos takiego
Kod
  for(var i=0;i<=oList2.length-1;i++){
        var oOption2 = document.createElement('option');
        oOption2.setAttribute('value',oList2Value[i]);
        oOption2 = document.createTextNode(oList2Text[i]);
        oSelect2.appendChild(oOption2);
      }

bo wczesniej wrzucilem do tablicy

z tym ze jest jeden problem
wszystko wrzuca mi do jednej opcji
i mam jedna do wyboru z 5 nazwami

Ten post edytował skowron-line 22.11.2007, 17:01:33


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
BaN
post
Post #6





Grupa: Zarejestrowani
Postów: 158
Pomógł: 43
Dołączył: 9.11.2007

Ostrzeżenie: (0%)
-----


O ile dobrze zrozumiałem, to chcesz utworzyć 5 selektów, więc wystaczy zrobić to w pętli. Dodałem dodatkowo 'name', gdyż chyba później te dane z formularza mają być wykorzystane.
Kod
function showOptions(){
   var i,j,select,oList = document.getElementById('abc'),n=oList.length
   var oDiv = document.getElementById('oDiv');
   for(j=1; j<=5; ++j) {
     select = document.createElement('select');
     select.setAttribute('name', 'nazwa' + j);
     for(i=0; i<n; i++){
       option = document.createElement('option');
       option.setAttribute('value',oList.options[i].value);
       option.appendChild(document.createTextNode(oList.options[i].text));
       select.appendChild(option);
     }
     oDiv.appendChild(select);
   }
}
Go to the top of the page
+Quote Post
skowron-line
post
Post #7





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


nie no zle zrozumiales chce 1 select z 5 opcjami


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
BaN
post
Post #8





Grupa: Zarejestrowani
Postów: 158
Pomógł: 43
Dołączył: 9.11.2007

Ostrzeżenie: (0%)
-----


Możesz wykorzystać funkcję, którą podałem wyżej lub krótszą wersję:
  1. <script type="text/javascript">
  2. function createOptions(){
  3. var i,opcje=[[1,'opcja 1'],[2,'opcja 2'],[3,'opcja 3'],[4,'opcja 4'],[5,'opcja 5']],n=opcje.length
  4. var o=document.getElementById('abc').options
  5. for(i=0;i<n;++i){
  6. o[o.length]=new Option(opcje[i][1],opcje[i][0],false,false)
  7. }
  8. }
  9. </head>
  10. <body onLoad="createOptions()">
  11. <select id="abc">
  12. </body></html>
Go to the top of the page
+Quote Post
skowron-line
post
Post #9





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


@BaN no to teraz mi dajes skrypt.
ja mam cos takiego

pobieram wartosci z juz istniejacej listy
Kod
var oList2 = document.getElementById('id_stawka_vat1');
   var oList2Value = new Array();
   var oList2Text = new Array();
   for(var i=0; i<=oList2.length-1;i++){
    oList2Value[i] = oList2.options[i].value;
    oList2Text[i] = oList2.options[i].text;
    //alert(oList1.options[i].value);  
   }


a potem wkladam do nowo utowrzonego
Kod
  oSelect2 = document.createElement('select');
         oSelect2.setAttribute('name','id_stawka_vat'+numRows);
         oSelect2.setAttribute('onchange','Netto('+numRows+')');
         oSelect2.setAttribute('onchange','Netto('+numRows+')');
       for(var i=0;i<=oList2.length-1;i++){
        var oOption2 = document.createElement('option');
        oOption2.setAttribute('value',oList2Value[i]);
        oOption2 = document.createTextNode(oList2Text[i]);
        oSelect2.appendChild(oOption2);
      }


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
BaN
post
Post #10





Grupa: Zarejestrowani
Postów: 158
Pomógł: 43
Dołączył: 9.11.2007

Ostrzeżenie: (0%)
-----


Nie rozumiem w takim razie co chcesz zrobić. Kod który podałem w poście #4 tworzy selekta z opcjami na podstawie już istniejącego selekta, czyli tak jak chciałeś mieć. Jeżeli pierwszy ma trzy opcje, to drugi też będzie miał trzy. Jeżeli chcesz dopisać dodatkowe opcje do drugiego selekta, to wykorzystaj te same polecenia, ale z innymi parametrami.
Go to the top of the page
+Quote Post
skowron-line
post
Post #11





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


jak na moje oko oba te skrypty sa takie podobne, ten sam sens ale inaczej napisane wiec nie rozumiem dlaczego nie dziala

Ten post edytował skowron-line 23.11.2007, 14:30:17


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Kod
var oOption2 = document.createElement('option');
        oOption2.setAttribute('value',oList2Value[i]);
        oOption2 = document.createTextNode(oList2Text[i]);
        oSelect2.appendChild(oOption2);

I przyjrzyj sie linijce 3 i temu co tam robisz

ps:
Cytat
ten sam sens ale inaczej napisane wiec nie rozumiem dlaczego nie dziala
A to ciekawe stwierdzenie smile.gif
Od kiedy ten sam sens idzie w parze z tą samą poprawnością kodu?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
skowron-line
post
Post #13





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


@BaN dzieki wielkie za kodzik, teraz dziala jak nalezy
@nospor oczywiscie konstruktywna krytyka


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 08:06