Avatar billede janiz Nybegynder
17. marts 2004 - 15:55 Der er 19 kommentarer og
1 løsning

Farve ændring ved Checked checkbox?

hej jeg fandt dette script som næsten udfører det jeg er ude efter men jeg ved ikke hvorda det laves så hvis jeg Un-checker checkboxed så fjernes farve markerigen igen, kan i hjælpe?

altså når checkboxed en checked så skal den markeres med en farve og når man laver den til ikke checked så skulle farven forsvinde igen.

jeg vil også gerne have at koden virker i så mange browsere som muligt.

her er hele koden:

<HTML>
<HEAD>
</HEAD>
<BODY>

<SCRIPT>
function highlightRow (element, color) {
  while (element.tagName.toUpperCase() != 'TR' && element != null)
    element = document.all ? element.parentElement : element.parentNode;
  if (element)
    element.bgColor = color;
}
</SCRIPT>

<TABLE>
<TR><TD>
<INPUT TYPE="checkbox" ONCLICK="highlightRow(this, 'red');">
</TD><TD>valg nummer 1</TD></TR>
<TR>
<TD>
<INPUT TYPE="checkbox" ONCLICK="highlightRow(this, 'red');">
</TD><TD>valg nummer 2</TD></TR>
</TABLE>
</BODY>
</HTML>
Avatar billede thesurfer Nybegynder
17. marts 2004 - 16:00 #1
har du prøvet?:
  if (element) {
    element.bgColor = color;
  } else {
    element.bgColor = '#FF0000';
}
Avatar billede mm12010 Nybegynder
17. marts 2004 - 16:04 #2
if (element) element.backgroundColor=color;
else element.backgroundColor='#0000FF';
Avatar billede mm12010 Nybegynder
17. marts 2004 - 16:05 #3
og igen:

if (element) element.style.backgroundColor=color;
else element.style.backgroundColor='#0000FF';
Avatar billede janiz Nybegynder
17. marts 2004 - 16:07 #4
takker, men kan ikke helt få det til at virke.. kan i ikke poste en komplet kode som laver det som den skal? har prøvet at ændre if sætningen men der sker ikke noget.. hmm
Avatar billede nute Nybegynder
17. marts 2004 - 16:08 #5
Det er noget underlig kode der er lavet ... men så skal du gøre sådan

function highlightRow (element, color)
{
    var bChecked = element.checked;
    while (element.tagName.toUpperCase() != 'TR' && element != null)
    {
        element = document.all ? element.parentElement : element.parentNode;
    }
       
      if (element)
        element.bgColor = ( bChecked ? color : "white" );
}

/nute
Avatar billede mm12010 Nybegynder
17. marts 2004 - 16:11 #6
det må vel stadig være:

      if (element)
        element.style.backgroundColor = ( bChecked ? color : "white" );

i stedet for:

      if (element)
        element.bgColor = ( bChecked ? color : "white" );

...?-)
Avatar billede janiz Nybegynder
17. marts 2004 - 16:16 #7
nute: cool det virker, ang. koden det var noget jeg tilf.  fandt, hvis det er noget som ikke virker for godt må du gerne kommer med noget der er bedre! :)
Avatar billede nute Nybegynder
17. marts 2004 - 16:19 #8
mm12010 >> jow .. det skal det, men nu svaret jeg med den samme kode der blev smidt herind ... janiz bruger 'element.bgColor', så svarer jeg også med det samme

thesurfer && mm12010 >> hvorfor tester i ikke jeres kode inden i smider den herind ?? 'element' i denne sammenhæng refererer til et objekt og derfor vil aldrig jeres 'else' blive true ...
Avatar billede nute Nybegynder
17. marts 2004 - 16:22 #9
janiz >> den er sådan set smart nok ... den er jo generisk, så den behøves ikke ændret. den vil altid finde den række din checkbox ligger i, så den er god nok. når jeg skrev 'underlig', så var det måske mere et udtryk for at jeg ikke har set deen måde at gøre det på. En cykel så også 'underlig' ud den første gang den trillet på en vej, men nu bruger alle det ;o]
Avatar billede mm12010 Nybegynder
17. marts 2004 - 16:22 #10
noget bedre ved jeg ikke, men det kun skal i den sammenhæng du viser, kunne man tale for at gøre sådan(testet og virker;-):

<TABLE>
  <TR id="nr1">
    <TD><INPUT TYPE="checkbox" ONCLICK="document.getElementById('nr1').style.backgroundColor=(this.checked?'red':'white')"></TD>
    <TD>valg nummer 1</TD></TR>
  <TR id="nr2">
    <TD><INPUT TYPE="checkbox" ONCLICK="document.getElementById('nr1').style.backgroundColor=(this.checked?'red':'white')"></TD>
    <TD>valg nummer 2</TD>
  </TR>
</TABLE>
Avatar billede mm12010 Nybegynder
17. marts 2004 - 16:23 #11
når denne bliver rettet til 2 :

  <TR id="nr2">
    <TD><INPUT TYPE="checkbox" ONCLICK="document.getElementById('nr2').style.backgroundColor=(this.checked?'red':'white')"></TD>
    <TD>valg nummer 2</TD>
  </TR>
Avatar billede nute Nybegynder
17. marts 2004 - 16:25 #12
mm12010 >> dette er en tyngre måde at gøre det på, så den vil jeg nok ikke anbefale ...

/nute
Avatar billede janiz Nybegynder
17. marts 2004 - 16:27 #13
nute mange tak! en "lille" ting, som det er nu ser den ikke efter om checkboxen er checked vel? men kører udfra onclick.. ville det være muligt at lave det så den ændrer farven udfra om checkboxen er checked eller ej? som det er nu bruger jeg det på en søge side og hvis man søger kommer man til resultat siden og hvis man så klikker Back så er checkboxene stadigt checked men farven er væk?
Avatar billede mm12010 Nybegynder
17. marts 2004 - 16:31 #14
nute >> hvad mener du?-)
Avatar billede nute Nybegynder
17. marts 2004 - 16:35 #15
janiz >> hmm ... ála dette:

<HTML>
<HEAD>
<SCRIPT>
function init()
{
    var arrElements = document.forms['frm'].elements;
    for( i = 0; i < arrElements.length; i++ )
    {
        if( arrElements[i].type == "checkbox" )
        {
            highlightRow (arrElements[i], "red")
        }
    }
}
function highlightRow (element, color)
{
    var bChecked = element.checked;
    while (element.tagName.toUpperCase() != 'TR' && element != null)
    {
        element = document.all ? element.parentElement : element.parentNode;
    }
       
      if (element)
        element.style.backgroundColor = ( bChecked ? color : "white" );
}
</SCRIPT>
</HEAD>
<BODY onload="init();">
<form id="frm">
<TABLE>
<TR><TD>
<INPUT TYPE="checkbox" ONCLICK="highlightRow(this, 'red');">
</TD><TD>valg nummer 1</TD></TR>
<TR>
<TD>
<INPUT TYPE="checkbox" ONCLICK="highlightRow(this, 'red');">
</TD><TD>valg nummer 2</TD></TR>
</TABLE>
</form>
</BODY>
</HTML>

mm12010 >> jeg mener det jeg skriver ;o]
Avatar billede janiz Nybegynder
17. marts 2004 - 16:54 #16
nute: Det er helt perfekt!! mange tak :)
Avatar billede nute Nybegynder
17. marts 2004 - 17:00 #17
fino ... men 200 points for dette er altfor meget. jeg ønsker ikke mere end max 30 for dette ... smid et svar selv og snup størstedelen af pointsene selv

/nute
Avatar billede janiz Nybegynder
17. marts 2004 - 17:01 #18
jeg synes du har fortjent dem alle!
Avatar billede nute Nybegynder
17. marts 2004 - 17:14 #19
janiz >> tak ... men nej tak.

når man opretter et spm, står der tydelig:

15 : Let
30 : Medium
60 : Svær

med 200 points, så bør dette være et *meget* svært spørgsmål. antal points skal afspejle sværhedsgraden på spørgsmålet, ikke brugerens desperation eller ignorance (no offence). Du har fået løst dit problem på lidt i overkant af 10 minutter (når du kigger på min første posting), og dine videre spm har bare været en uddybning af dette, så dette kan ikke kategoriseres som en "over 3 gange så svær en opgave som en svær opgave" ... if you get my point.

venligst post et svar her, så du får dine points tilbage:

http://www.eksperten.dk/spm/478560

/nute
Avatar billede janiz Nybegynder
17. marts 2004 - 17:35 #20
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester