Avatar billede sbaht Nybegynder
20. august 2012 - 11:42 Der er 8 kommentarer og
1 løsning

Skrifte baggrund i td celle

Jeg har nedenstående funktion, som på bagrund et returneret resultat skal skrifte baggrunden på den celle som der er en værdi i, men af en eller anden årsag bliver alle celler hvide.

Er der nogen der har et trick til dette?

function setbackground(){
             
var cells = document.getElementById('tableID').getElementsByTagName('td');                     
         
for (var i = 0; i < cells.length; i++) {
    if (cells[i].getAttribute("name")){
        if (cells[i].getAttribute("name") == "cellname"){         
           
cells[i].style.background="#FFFFFF";                                       
    }         
  }
  }
Avatar billede kjeldsted Novice
20. august 2012 - 13:13 #1
For mig at se er det vel ikke så underligt. Du sætter alle celler til #FFFFFF. Jeg kan da i hvert fald ikke se hvor du skulle lave baggrunden grå.
Du skal vel registrere om den forrige række er enten hvid eller går og så sætte den pågældende række til det modsatte.
Avatar billede kjeldsted Novice
20. august 2012 - 13:14 #2
Glem ovenstående.. Læste forkert.
Avatar billede olebole Juniormester
20. august 2012 - 16:02 #3
<ole>

Til en begyndelse skal du nok se at få lukket dine gamle tråde  *o)

Hvad koden angår, så udløser den jo JavaScript fejl, som du bør have opdaget. Du kunne også hjælpe dig selv enormt ved at stille koden ordentligt og logisk op. Den kode, du har skrevet i spørgsmålet, er der ingen, der kan overskue - så først, når man får den rykket ordentligt ind, opdager man, at der mangler en 'Tuborg'  =)

Med den fungerer scriptet fint:

<table id="tableID" style="background:red">
<tr><td>blabla</td></tr>
<tr><td name="cellname">blabla</td></tr>
<tr><td>blabla</td></tr>
<tr><td name="cellname">blabla</td></tr>
<tr><td>blabla</td></tr>
</table>

<script type="text/javascript">
function setbackground(){
    var cells = document.getElementById('tableID').getElementsByTagName('td');
    for (var i = 0; i < cells.length; i++) {
        if (cells.getAttribute("name")){
            if (cells[i].getAttribute("name") == "cellname"){
                cells[i].style.background="#FFFFFF";                                       
            }         
        }
    }
}
setbackground();
</script>

- men jeg håber ikke, du skriver tabellen, som jeg har gjort. Det er invalid kode at give tabelceller en name attribut, designtime. Hvis du skal bruge sådan en attribut [i]skal
den sættes med setAttribute

/mvh
</bole>
Avatar billede olebole Juniormester
20. august 2012 - 16:03 #4
Damned ...! Fanden tage Ekspertens elendige BB-parser! Jeg prøver igen  =)

<table id="tableID" style="background:red">
<tr><td>blabla</td></tr>
<tr><td name="cellname">blabla</td></tr>
<tr><td>blabla</td></tr>
<tr><td name="cellname">blabla</td></tr>
<tr><td>blabla</td></tr>
</table>

<script type="text/javascript">
function setbackground(){
    var cells = document.getElementById('tableID').getElementsByTagName('td');
    for (var i = 0; i < cells.length; i++) {
        if (cells[ i].getAttribute("name")){
            if (cells[ i].getAttribute("name") == "cellname"){
                cells[ i].style.background="#FFFFFF";                                       
            }         
        }
    }
}
setbackground();
</script>
Avatar billede sbaht Nybegynder
21. august 2012 - 15:40 #5
Scriptet fungerer også fint nok for mig, jeg havde ikke fået kopieret det hele, derfor den manglende "tuborg".

Mit issue er at jeg kun ønsker at skrifte farve fra eks. rød til hvid hvis der er en tekst i cellen.
Mit html genereres igennem xslt.

Har du et en idé til hvordan jeg looper igennem cellerne?
Avatar billede olebole Juniormester
21. august 2012 - 16:04 #6
Dine name attributter er stadig ikke valide. Sådan én er ikke kovlig på et TD element  =)

Hvis både en attribut skal være present - og der skal stå noget tekst i elementet - kan du skrive:

<script type="text/javascript">
function setbackground(){
    var cells = document.getElementById('tableID').getElementsByTagName('td');
    for (var i = 0; i < cells.length; i++) {
        if (cells[ i].getAttribute("name")){
            if (cells[ i].getAttribute("name")=="cellname" && cells[ i].firstChild && cells[ i].firstChild.nodeValue!==""){
                cells[ i].style.background="#FFFFFF";                                       
            }         
        }
    }
}
setbackground();
</script>
Avatar billede sbaht Nybegynder
08. september 2012 - 08:13 #7
Smid lige et svar og du får point.
Avatar billede olebole Juniormester
08. september 2012 - 12:44 #8
Ellers tak, jeg samler ikke point. Læg selv et svar og accepter det, så tråden lukkes  =)
Avatar billede sbaht Nybegynder
10. september 2012 - 12:08 #9
Lukker
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