Avatar billede jespersen Nybegynder
16. oktober 2001 - 21:45 Der er 6 kommentarer og
1 løsning

Set baggrundsfarve i td

Hejsa!
Jeg har en tabel, med x antal rækker. Hver række består af flere celler. Alle cellerne i hver række har et id der er lig med den række de tilhører i tabellen. Altså alle cellerne i den første <tr> har id=1, alle cellerne i den anden <tr> har id=2 osv.
På hver række har jeg et stykke grafik.
Her kommer opgaven så:
Jeg skal ved at tryk på grafikken, kunne sætte baggrundsfarven i alle de celler, der er i den række, hvor det stykke grafik der blev klikket på er.
Comrende?
Avatar billede nikolajdu Nybegynder
16. oktober 2001 - 21:56 #1
<td id=\"test\">
<img src=\"1.jpg\" onClick=\"test.style.background=\'#333333\';return false\">klik</a>
</td>
Avatar billede nikolajdu Nybegynder
16. oktober 2001 - 22:00 #2
Du behøver ikke return false - med mindre det er på et link, så væk med det.

<td id=\"test\">
<img src=\"1.jpg\" onClick=\"test.style.background=\'#333333\'\">klik</a>
</td>
Avatar billede jakoba Nybegynder
16. oktober 2001 - 22:02 #3
lad være med et bruge et id der er et tal. det skal starte med et bogstav før du pålideligt kan bruge det til at addressere dine <td er.

derudover skal dine id=\'xx\' være forskellige hvor hver eneste id=\'xx\' parameter. Det er ikke et ID hvis mange har det samme.

men du kan jo også bare nøjes med et ID i den <tr hvor alle <td er skal sættes.

altså:

<tr id=\'id1\'>

så kan du lave et lille javascript.

<script language=\'javascript\'>

function rekkeFarve( idnavn, farve ) {
    if ( document.getElementById )
        var rekke = document.getElementById( idnavn )
    else
    if ( document.all )
        var rekke = document.all[ idnavn ]
    else
        return;  // dette duer ikke i NS4
    if ( rekke.tagName != \"TR\" )
        return;  // det skal være en tabelrække
    for (var i=0; rekke.children.length > i; i++ ) {
        rekke.children[i].style.backgroundColor = farve;
    }
}; //end rekkeFarve( string, string )

</script>

funktionen kan så fx kaldes med mouseover i et link:

<a href=\"www.eksperten.dk\"
    onMouseover=\"rekkeFarve( \'id1\', \'green\' )\"
    onMouseout=\"rekkeFarve( \'id1\', \'FFCCCC\' )\">klikketekst</a>

mvh JakobA
Avatar billede nikolajdu Nybegynder
16. oktober 2001 - 22:02 #4
alle felter med id=\"test\" vil så skifte baggrund.
Avatar billede martinfrost Nybegynder
16. oktober 2001 - 22:04 #5
Ikke sikker på jeg forstår det helt, og jeg ved heller ik, om der ik opstår nogle problemer, når du giver flere celler samme ID, men det med baggrundsfarven skulle du kunne klare ved at lave en simpel:

bgcolor property inde i cellen.

<table><tr id=1a> osv... <img src=\"...\" onClick=\"java script:farve1()\">

</tr>
</table>

<script>

function farve1(){
1a.bgColor = #FF00FF ;
1b.bgColor = #FF00FF ;
1c.bgColor = #FF00FF ;
}

function farve2(){
2a.bgColor = #FF00FF ;
2b.bgColor = #FF00FF ;
2c.bgColor = #FF00FF ;
}

</script>



Det burde virke :)

/ Martin
Avatar billede jespersen Nybegynder
16. oktober 2001 - 22:11 #6
Jacoba: Din virker - du har fortjent point! Kan du udvide metoden, så den sætter den markerede række tilbage til den origiale baggrundsfarve, når man klikker på en ny? Men ellers så er det også ok. Tak for hjælpen :-)
Avatar billede jakoba Nybegynder
16. oktober 2001 - 22:48 #7
noget i retning af:

<script language=\'javascript\'>

var sidstAktiveret = \"\";

function rekkeRestore( idnavn ) {  // sæt oprindelige baggrundsfarver i rækken
    if ( document.getElementById )
        var rekke = document.getElementById( idnavn )
    else
    if ( document.all )
        var rekke = document.all[ idnavn ];
    for (var i=0; rekke.children.length > i; i++ ) {
        rekke.children[i].backgroundColor = rekke.children[i].gammelFarve;
    }

}; //end rekkeRestore( string )

function rekkeFarve( idnavn, farve ) {  // sæt en baggrundsfarve i rækken
    if ( document.getElementById )
        var rekke = document.getElementById( idnavn )
    else
    if ( document.all )
        var rekke = document.all[ idnavn ]
    else
        return;                // dette duer ikke i NS4
    if ( rekke.tagName != \"TR\" )
        return;                // det skal være en tabelrække
    if ( sidstAktiveret && sidstAktiveret != idnavn )
        rekkeRestore( sidstAktiveret )
    sidstAktiveret = idnavn;
    for (var i=0; rekke.children.length > i; i++ ) {
        if ( ! rekke.children[i].gammelfarve )
            rekke.children[i].gammelFarve = rekke.children[i].backgroundColor;
        rekke.children[i].style.backgroundColor = farve;
    }
}; //end rekkeFarve( string, string )

</script>

mvh JakobA
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