Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zaznaczanie checkbox
Forum PHP.pl > Forum > Po stronie przeglądarki
Vomit
Witam,

mam tabelke, i chcialby za pomcoa checboxa nie tylko zaznaczyc go, ale takze zmienic kolor tła calego wiersza.

Wykombinowalem takie cos:

Kod
<style type="text/css">
#hehe
{
    background: #00CCFF;
}
</style>
<script language="javascript">
var i = 0;
function click()
{
    if ( i == 0 )
    {
  i = 1;
  document.getElementById('hehe').style.background = '#FF6633';
  
    }
    else
    {
  i = 0;
  document.getElementById('hehe').style.background = '#00CCFF';
    }    
}
</script>


Kod
{@setvar(var="i" val=0)}
<table width="400" border="1">
{@list(teachers)}
<tr id="hehe" class="hehe"><td>{@math(i+1)}</td><td>{teachers['teacherNames']}</td><td>{teachers['teacherSurname']}</td><td><input type="checkbox" name="id" onchange="javascript:click();"></td></tr>
{@end}
</table>


Ale niestety nie dziala. Gdzie co poprawic?
siemakuba
nie wiem czy to wystarczy, ale zdecydowanie
Kod
document.getElementById('hehe').style.backgroundColor = '#FF6633';

zamiast
Kod
document.getElementById('hehe').style.background = '#FF6633';


pozdr.
Vomit
Raczej nie. Nawet nie sprawdzam.

Skrypt zdiala poprawnie jesli skorzystam z niego w taki sposob:
  1. <a href="javascript:click()">asdsad</a>


nie potrafie jednak z niego skorzystac aby w momencie zaznaczenia checboxa funkcja zostala zastosowana.
TomASS
Spróbuj podglądnąć tutaj jak zmieniam kolor wiersza.
siemakuba
no tak... nie zwróciłem uwagi... banalność, ehh..

zmiana:
Kod
onchange="javascript:click();"

onchange="click();"

powinna problem rozwiązać.
Vomit
siemakuba, bylby zbyt banalny, nie mysl, ze tego nie sprawdzalem wczesniej, nie dziala.

TomASS: podejrzalem, jednak jestem juz o krok od wlasnego rozwiazania problemu.

brakuje mi tylko jednego: co tam powinno byc

<input type="checkbox" costam="funkcja();">

Brakuje mi tego costam. A moze w ogle tak sie nie da?
siemakuba
hmm, skoro tak, to faktycznie problem leży w odpowiednim dobraniu zdarzenia na jakie ma zareagowac funkcja.
próbowałeś onclick?

i jeszcze jedno, nie wiem jakie masz style, ale jezeli definiujesz w nich kolor tla dla TD, to zmiany przez JS dla TRa nic nie dadzą. Moze sproboj zamiast:
Kod
document.getElementById('hehe').style.background = '#FF6633';

dać:
Kod
var eRow = document.getElementById('hehe');
var eCells = eTR.getElementsByTagName('TD');

for (var eCell in eCells)
{
    eCell.style.backgroundColor =  '#FF6633';
}

pozdr.
Tajny
onclick powinno wystarczyc, status checkboxa mozesz sprawdzic np przez
document.getElementById('twoj_check').checked

zwroci true lub false i zawsze mozesz mu zmienic przypisujac np
document.getElementById('twoj_check').checked=true;


np.
Kod
<input type="checkbox" id="act.check" onclick="javascript:CheckMe('act.check');">


<script>

function CheckMe(ID){
var IDA=document.getElementById('ID');
  if (ID=='act.check') {
         //twoje funkcje tutaj
         //np.
         if (IDA.checked==false)  {
         //jesli byl zaznaczony

         } else {
            //w przeciwnym wypadku
         }

}

}

</script>


a co do zmiany styli to proponuje abys utworzyl 2 klasy dla TD , jedno dla odznaczonego (o nazwie TD.default ) , drugie dla zaznaczonego ( TD.my_selected)

style mozesz zmieniac przez className

czyli

<td class="default" id="wiersz.80"></td>

i np. po wcisnieciu checkboxa niech zmieni sie jego classname

Kod
<script>

function CheckMe(ID){
var IDA=document.getElementById('ID');
  if (ID=='act.check') {
         //twoje funkcje tutaj
         //np.
         if (IDA.checked==false)  {
         //jesli byl zaznaczony
document.getElementById('wiersz.80').className='my_selected';

         } else {
            //w przeciwnym wypadku
document.getElementById('wiersz.80').className='default';
         }

}

}

</script>


pamiętaj że zmiana całej klasy jest szybsza niż elementu stylu

http://www.quirksmode.org/dom/classchange.html
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.