Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Zmiana stylu elementu
Forum PHP.pl > Forum > Przedszkole
stefik4
  1. <script type="text/javascript">
  2.  
  3. function show(co,ile,ile2){
  4.  
  5. switch(co){
  6. case 'junior': var na = 'senior'; break;
  7. case 'senior': var na = 'junior'; break;
  8. };
  9.  
  10. alert('chcesz zobaczyc pola: '+co+'1-'+ile+', a ukryc: '+na+'1-'+ile2);
  11.  
  12. for(i=0;i<=ile;i++)
  13. { document.getElementById(co+'_'+i).style.border='2px dotted #24c3d1'; }
  14.  
  15. for(z=0;z<=ile2;z++)
  16. { document.getElementById(na+'_'+z).style.border='0px dotted #24c3d1'; }
  17.  
  18. }
  19.  
  20. </script>


Posiadam taki kod JS. Mam an stronie tabelę, której linie przedstawiają się następująco:
<tr id="senior_0">...</tr>
<tr id="junior_0">...</tr>
<tr id="senior_1">...</tr>
<tr id="senior_2">...</tr>
<tr id="junior_1">...</tr>
<tr id="senior_3">...</tr>
<tr id="senior_4">...</tr>
<tr id="senior_5">...</tr>
<tr id="junior_2">...</tr>
<tr id="senior_6">...</tr>

Pod tym wszystkim mam dwa odnośniki:

  1. <a href="#" onclick="show('junior','2','6')">Pokaż juniorów</a>
  2. <a href="#" class="black_buttons" onclick="show('senior','6','2')">Pokaż seniorów</a>



gdy kliknę na pokaz juniorów to prawidłowo bierze w ramkę tych juniorów, lecz jeśli później kliknę w pokaz seniorów to juniorzy się nie odznaczają jakby, czyli coś nie tak jest z drugą częścią kodu ;/

Walczę z tym już od dawna i nie mogę sobie poradzić ;/
zegarek84
ale kiedy tak patrze na przykładowy kod wierszy w tabelce to ten skrypt w ogóle nie powinien działać - a dlaczego - zaraz sam sobie odpowiesz i zapewne tu masz bład w drugiej części...

co jest generowane w js przez:
co+'_'+i questionmark.gif

a jakie masz id?? junior1 - więc coś tu nie tak??

i dalej podobnie i z odznaczaniem i z seniorami:
na+'_'+z
senior6

zapewne gdzieś to ujednoliciłeś ale zapomniałeś o poprawieniu kodu ukrywania - poza tym po co to tak dziwnie okrężną drogą gdzie musisz znać liczbę elementów - nie było na klasach czy jak to zrobićquestionmark.gif
stefik4
Właśnie nie wiem zbytnio jak to zrobić an klasach ;/

// A Co do tej tabeli to błądnie tam wpisałem przyklad. sorry za pomyłkę.

// moga byc od 0, bo w tych liniach tr id tez mam od 0. Nadal nie wiem jak zrobic element.getdocument by class ;/
BaN
Obie pętle for(...) mają być od 1 a nie od 0
skowron-line
Ogólnie cała funkcja jest źle zbudowana, no ale jakby to już co innego
[JAVASCRIPT] pobierz, plaintext
  1. var table = document.getElementById('table');
  2. var tr = table.getElementsByTagName('tr');
  3. for(var i=0; i<=tr.length; i++)
  4. {
  5. if(tr[i].id.indexOf(junior_senior) //<---- sprawdzasz czy w ID znajduje się szukany ciąg "junior" lub "senior" UWAGA indexOf nie działa w IE
  6. {
  7. // pokazujesz
  8. }
  9. else
  10. {
  11. // ukrywasz
  12. }
  13. }
[JAVASCRIPT] pobierz, plaintext

Albo przeczytaj sobie https://developer.mozilla.org/En/DOM/Document.querySelector to i pokombinuj z selektorami.
BaN
Cytat(stefik4 @ 8.10.2010, 19:33:32 ) *
Właśnie nie wiem zbytnio jak to zrobić an klasach ;/

napisał już o tym @skowron-line, ale widzę, że jesteś zupełnie początkujący

dodajesz jakiś identyfikator do tabelki:
  1. <table id="tabelka">

w wierszach gdzie masz juniorów robisz:
  1. <tr class="junior">...</tr>

podobnie w wierszach gdzie masz seniorów:
  1. <tr class="senior">...</tr>


funkcja JS:
  1. function show(co){
  2. var tabelka=document.getElementById('tabelka');
  3. var wiersze=tabelka.getElementsByName('tr');
  4. for(var i=0, n=wiersze.length; i<n; ++i){
  5. wiersze[i].style.border=(wiersze[i].className==co) ? '2px dotted #24c3d1' : '0px dotted #24c3d1';
  6. }
  7. }

no i oczywiście zmieni się wywołanie tych funkcji na odpowiednio:
  1. <a href="#" onclick="show('junior');return false">Pokaż juniorów</a>
  2. <a href="#" class="black_buttons" onclick="show('senior');return false">Pokaż seniorów</a>



Cytat(stefik4 @ 8.10.2010, 19:33:32 ) *
// moga byc od 0, bo w tych liniach tr id tez mam od 0. Nadal nie wiem jak zrobic element.getdocument by class ;/


Poprawiłeś po moim wpisie smile.gif ale identyfikatory na wierszach nie są potrzebne
erix
[JAVASCRIPT] pobierz, plaintext
  1. var wiersze=tabelka.getElementsByName('tr');
[JAVASCRIPT] pobierz, plaintext

Na pewno?
BaN
Cytat(erix @ 8.10.2010, 23:50:10 ) *
[JAVASCRIPT] pobierz, plaintext
  1. var wiersze=tabelka.getElementsByName('tr');
[JAVASCRIPT] pobierz, plaintext

Na pewno?


Wiesz, że nie, trzeba było od razu poprawić smile.gif, w wierszu 3. powinno być:
[JAVASCRIPT] pobierz, plaintext
  1. var wiersze=tabelka.getElementsByTagName('tr');
[JAVASCRIPT] pobierz, plaintext


erix
Od razu poprawiając nikt by nie ruszył głową w celu poszerzenia swoich wiadomości. tongue.gif
kamil4u
Cytat
wiersze[i].className==co

Tak się nie powinno robić, chyba, że jesteś pewien swoich klas. Powinno się spr. klasę używając właśnie indexOf . Bo co by było gdybyś miał np. class="test1 senior test2"
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.