Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript]Zmiana stylu elementu
stefik4
post
Post #1





Grupa: Zarejestrowani
Postów: 176
Pomógł: 1
Dołączył: 18.11.2007

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


  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ć ;/

Ten post edytował stefik4 8.10.2010, 19:55:40
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
zegarek84
post
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


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


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
stefik4
post
Post #3





Grupa: Zarejestrowani
Postów: 176
Pomógł: 1
Dołączył: 18.11.2007

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


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 ;/

Ten post edytował stefik4 8.10.2010, 19:56:42
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%)
-----


Obie pętle for(...) mają być od 1 a nie od 0
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%)
-----


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.


--------------------
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%)
-----


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
Go to the top of the page
+Quote Post
erix
post
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




[JAVASCRIPT] pobierz, plaintext
  1. var wiersze=tabelka.getElementsByName('tr');
[JAVASCRIPT] pobierz, plaintext

Na pewno?


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
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%)
-----


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


Go to the top of the page
+Quote Post
erix
post
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Od razu poprawiając nikt by nie ruszył głową w celu poszerzenia swoich wiadomości. tongue.gif


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
kamil4u
post
Post #10





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


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"


--------------------
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 - 10:01