Autor Zpráva
Stepanka
Profil *
Ahoj,

prosím mohl by mi někdo poradit s jedním problémem?

Mám takovou velkou tabulku checkboxů ve formuláři:

$k=0;
while ($row = mysql_fetch_array($query)) {
	
	echo '<tr> 
	<td onclick="check(\'a'.$k.'\')"><input type="checkbox" onclick="check(\'a'.$k.'\')" id="a'.$k.'" name="id['.$k.']" value="'.$row['id'].'"></td>
	<td onclick="check(\'b'.$k.'\')"><input type="checkbox" onclick="check(\'b'.$k.'\')" id="b'.$k.'" name="login['.$k.']" value="'.$row['login'].'"></td>
	<td onclick="check(\'c'.$k.'\')"><input type="checkbox" onclick="check(\'c'.$k.'\')" id="c'.$k.'" name="name['.$k.']" value="'.$row['name'].'"></td>
	<td onclick="check(\'d'.$k.'\')"><input type="checkbox" onclick="check(\'d'.$k.'\')" id="d'.$k.'" name="surname['.$k.']" value="'.$row['surname'].'"></td>
	<td onclick="check(\'e'.$k.'\')"><input type="checkbox" onclick="check(\'e'.$k.'\')" id="e'.$k.'" name="email['.$k.']" value="'.$row['email'].'"></td>
	<td onclick="check(\'f'.$k.'\')"><input type="checkbox" onclick="check(\'f'.$k.'\')" id="f'.$k.'" name="country['.$k.']" value="'.$row['country'].'"></td>
	<td onclick="check(\'g'.$k.'\')"><input type="checkbox" onclick="check(\'g'.$k.'\')" id="g'.$k.'" name="affiliation1['.$k.']" value="'.$row['affiliation1'].'"></td>
	<td onclick="check(\'h'.$k.'\')"><input type="checkbox" onclick="check(\'h'.$k.'\')" id="h'.$k.'" name="affiliation2['.$k.']" value="'.$row['affiliation2'].'"></td>
	<td onclick="check(\'i'.$k.'\')"><input type="checkbox" onclick="check(\'i'.$k.'\')" id="i'.$k.'" name="position['.$k.']" value="'.$row['position'].'"></td>
	<td onclick="check(\'j'.$k.'\')"><input type="checkbox" onclick="check(\'j'.$k.'\')" id="j'.$k.'" name="departure_from['.$k.']" value="'.$row['departure_from'].'"></td>
	<td onclick="check(\'k'.$k.'\')"><input type="checkbox" onclick="check(\'k'.$k.'\')" id="k'.$k.'" name="departure_to['.$k.']" value="'.$row['departure_to'].'"></td>
	<td onclick="check(\'l'.$k.'\')"><input type="checkbox" onclick="check(\'l'.$k.'\')" id="l'.$k.'" name="vegetarian['.$k.']" value="'.$row['vegetarian'].'"></td>
	<td onclick="check(\'m'.$k.'\')"><input type="checkbox" onclick="check(\'m'.$k.'\')" id="m'.$k.'" name="special_wishes['.$k.']" value="'.$row['special_wishes'].'"></td>
	<td onclick="check(\'n'.$k.'\')"><input type="checkbox" onclick="check(\'n'.$k.'\')" id="n'.$k.'" name="participation['.$k.']" value="'.$row['participation'].'"></td>
	<td onclick="check(\'o'.$k.'\')"><input type="checkbox" onclick="check(\'o'.$k.'\')" id="o'.$k.'" name="authors['.$k.']" value="'.$row['authors'].'"></td>
	<td onclick="check(\'p'.$k.'\')"><input type="checkbox" onclick="check(\'p'.$k.'\')" id="p'.$k.'" name="title['.$k.']" value="'.$row['title'].'"></td>
	<td onclick="check(\'q'.$k.'\')"><input type="checkbox" onclick="check(\'q'.$k.'\')" id="q'.$k.'" name="doc['.$k.']" value="'.$row['doc'].'"></td>
	<td onclick="check(\'r'.$k.'\')"><input type="checkbox" onclick="check(\'r'.$k.'\')" id="r'.$k.'" name="pdf['.$k.']" value="'.$row['pdf'].'"></td>
	<td onclick="check(\'s'.$k.'\')"><input type="checkbox" onclick="check(\'s'.$k.'\')" id="s'.$k.'" name="tex['.$k.']" value="'.$row['tex'].'"></td>
	</tr>';
	$k++;


jejíž řádky se tvoří v cyklech.

A já bych potřebovala, aby při kliknutí na buňku <td> se buňka obarvila a při opětovném kliknutí, aby se odbarvila. A zároveň, aby buňka měnila barvičku i při přejetí myší přes tuto buňku.

JS funkce vypadá zatím takto:

function check(id) {
  jm=document.getElementById(id);
  if (jm.checked==1) {
	  jm.checked=0; 
  } else {
	  jm.checked=1;
  }
}


Vrtám se v tom už od včerejšího odpoledne, ale výsledek žádný. Help please...

Děkuju
bohyn
Profil
Prepinani checkboxu nech na browseru, u JS vznikaji problemy s probublavanim a vicenasobnym volanim fce na prepinani

na checkbox dej onclick="check(this);"

fce na obarveni bunky
function check(obj) {
  // tusim ze v dobe udalosti onclick jeste neni checkbox
  // prepnuty (takze kdyz zaskrtavas tak je false)
  if (obj.checked == true) { // odskrtnuti
    obj.parentNode.style.backgroundColor = "red"; 
  } else { // zaskrtnuti
    obj.parentNode.style.backgroundColor = "blue"; 
  }
}
Stepanka
Profil *
bohyn
Aha, super, děkuji, funguje to pěkně..

Ale ještě mám před každým <tr> (před každým začátkem nového řádku) u tabulky jeden checkbox, který mi při kliknutí označí celý tento řádek checkboxů.

$k=0; $n=0;
while ($row = mysql_fetch_array($query)) {
	
	echo '<tr id="g'.$n.'"> 
	<td><label for="x'.$n.'" style="width:100%;height:100%;display:block;"><nobr><input type="checkbox" id="x'.$n.'" onclick="SelectAllFromGroup(this.checked, \'g'.$n.'\')" />
	'.$row['name'].' '.$row['surname'].'<nobr></label></td>
	
	....Všechny následující buňky <td>....


A když na tento checkbox kliknu, normálně se mi přebarví všechny <td> buňky v řádku na modrou, ale přebarví se i ta buňka pro označení všech. A to nechci, ta by mělo zůstat bílá.

Nevěděl by někdo, jak na to? Zkoušela jsem přiřadit tomuto checkboxu NAME 'xxx' a pak v JS testovat - pokud není NAME checkboxu 'xxx', tak obarvi. Ale nejde mi to..

JS pro funkci obarvení všech je takováto:

function SelectAllFromGroup( state, gID ) {
	var group = document.getElementById( gID );
	var inputs = group.getElementsByTagName( 'input' );
	for ( var i = 0; i < inputs.length; i++ ) {
		if ( inputs[i].type == 'checkbox' ) {
			inputs[i].checked = state;
			inputs[i].parentNode.style.backgroundColor = "#99CCFF";
			if (inputs[i].checked == false) {
				inputs[i].parentNode.style.backgroundColor = "white"; 
			}
		}
	}
}
bohyn
Profil
for ( var i = 1; i < inputs.length; i++ ) {...}

Edit: zacinej az od druheho inputu
Stepanka
Profil *
bohyn
Taky mě to mohlo napadnout.. :-) .. Děkuju moc.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: