Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Optymalizacja zamykania, otwierania DIV'a w oparciu o ID
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
seba22
Witam,

Mam taki kod:

  1. <input type="radio" name="typ" value="image" checked="true" onclick=javascript:Show("2","1","3","4")>
  2. <input type="radio" name="typ" value="youtube" onclick=javascript:Show("1","2","3","4")>
  3. <input type="radio" name="typ" value="link" onclick=javascript:Show("3","2","1","4")>
  4. <input type="radio" name="typ" value="tekst" onclick=javascript:Show("4","2","1","3")>



Do tego mamy DIV-y

  1. <div style="display:none"
  2. id="1">
  3. </div>
  4.  
  5. <div style="display:none"
  6. id="2">
  7. </div>
  8.  
  9. <div style="display:none"
  10. id="3">
  11. </div>
  12.  
  13. <div style="display:none"
  14. id="4">
  15. </div>



  1. <script language="javascript" type="text/javascript">
  2. Show(id_div,id_divc,id_divd,id_dive){ document.getElementById(id_div).style.display="block"; document.getElementById(id_divc).style.display="none"; document.getElementById(id_divd).style.display="none"; document.getElementById(id_dive).style.display="none";}</script>



Chciał bym go umieścić na swojej stronie www, ale wg mnie jest to złe rozwiązanie, bo jest nie skalowalne, jeżeli potrzebował bym dodać DIV 5, przepisywać muszę cała funkcję show, potem wszedzie dodawać go jako parametr dodatkowy.

Czy nie można by jakoś tego zautomatyzować ?
Żeby wysyłcć tylko
onclick=java script:Show("tab1")>

Wtedy automatycznie system wyświetlił by tab1 i zamknął wszystkie inne taby tab23456 przeleciał tak w pętli do 10 ciu.

Żeby nie trzeba było ręcznie przesyłać tego parametru.

Właśnie szukam rozwiązania na google, jedyne na co trafiłem to to, ale wydaje mi się nie skalowalne, dla tego nie chce tego używać.

Teraz potrzebuje dla 4 / 5 opcji, ale w przyszłości koło 30 / 50.
Wiec myślę już przyszłościowo...



pozdrawiam
erix
No np. coś takiego:

Kod
var divs = document.getElementById('rodzic').getElementsByTagName('div');

for(i=0;i<divs.length;i++){
   divs[i].onclick = function(e){
     //bleble
   }
}


Poza tym, nie zaczynaj identyfikatorów od samych cyfr.
seba22
Nie wiem czy się dobrze wyraziłem.

Mam na myśli że klikając na radio button, wyświetla mi się dany DIV.
  1. function Show(id_div,id_divc,id_divd,id_dive)
  2. {
  3. document.getElementById(id_div).style.display="block";
  4. document.getElementById(id_divc).style.display="none";
  5. document.getElementById(id_divd).style.display="none";
  6. document.getElementById(id_dive).style.display="none";
  7. }


Chodzi o ten fragment:

  1. document.getElementById(id_divc).style.display="none";
  2. document.getElementById(id_divd).style.display="none";
  3. document.getElementById(id_dive).style.display="none";


Aby to, wykonało się automatycznie, bez wskazywania konkretnych wpisów manualnie.
erix
No to zastosuj mojego poprzedniego posta. winksmiley.jpg
dr_bonzo
W chyba kazdej bibliotece do JS-a masz taby: jQuery, prototype,.....
seba22
Cześć,


To znasz kolego dr_bonzo, jakikolwiek tabb-er którym można posłużyć się i wywołać go z on change przy wyborze radio buttona / list box ? ?

Jeżeli tak, to bym się za to zabrał.


http://www.stilbuero.de/jquery/tabs_3/rotate.html

Ten wygląda świetnie, i współpracuje z jquery, ale jak akcje kliknięcia przenieść do onchange....

Cytat(erix @ 16.03.2009, 11:31:00 ) *
No to zastosuj mojego poprzedniego posta. winksmiley.jpg



Czy to jest w miarę poprawne ?
  1. <script language="javascript" type="text/javascript">
  2.  
  3. function Show(id_div){
  4. var divs = document.getElementById('rodzic').getElementsByTagName('div');
  5.  
  6. for(i=0;i<divs.length;i++)
  7. {
  8. document.getElementById(divs[i].id).style.display="none";
  9. }
  10. document.getElementById(id_div).style.display="block";
  11. }


Zdaje się działać poprawnie, przynajmniej pod FF, więc pytam czy o te koncepcje chodziło.


Cytat(erix @ 16.03.2009, 11:31:00 ) *
No to zastosuj mojego poprzedniego posta. winksmiley.jpg



Czy to jest w miarę poprawne ?
  1. <script language="javascript" type="text/javascript">
  2.  
  3. function Show(id_div){
  4. var divs = document.getElementById('rodzic').getElementsByTagName('div');
  5.  
  6. for(i=0;i<divs.length;i++)
  7. {
  8. document.getElementById(divs[i].id).style.display="none";
  9. }
  10. document.getElementById(id_div).style.display="block";
  11. }


Zdaje się działać poprawnie, przynajmniej pod FF, więc pytam czy o te koncepcje chodziło.
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.