Avatar billede pesa Nybegynder
26. november 2001 - 20:25 Der er 19 kommentarer og
1 løsning

Farveskift i tabel

Jeg ønsker at oprette en tabel hvor farverne skifter for hver linje, sådan så hver anden har samme farve (f.eks. rød, blå, rød, blå osv.). Det har jeg ingen problemer med at lave i simpel tabelkonstruktion ved hjælp af HTML. Mit problem opstår ved at jeg har planer om at oprette en hjemmeside med i hvert fald 100 rækker og hvis jeg så senere skal fjerne en række betyder det at der kommer to ensfarve rækker i træk. Det ønsker jeg ikke skal ske! Selvfølgelig kan jeg gå den sure vej og ændre farven på de følgende rækker, men det kunne være rart hvis der var nogen der havde et script til at løse mit problem, således at farverne automatisk blev tilpasset ændringen.

Hvis der er nogen der har et sådan kunne jeg godt tænke mig (hvis det vides) hvilke browsere der understøtter / ikke understøtter scriptet.

Det er ikke et krav, men scriptet skal meget gerne understøtte XHTML.

På forhånd tak for hjælpen!
pesa
Avatar billede keysersoze Ekspert
26. november 2001 - 20:32 #1
eks.;

number = 0
Do While Not rs.EOF

If farve=1 Then
bg=\"#F56E11\"
farve= farve + 1
Else
bg=\"#FFCC99\"
farve=1
End If

number = number + 1

Response.Write \"<td width=\"\"200\"\" bgcolor=\"\"\" & bg & \"\"\" height=\"\"13\"\">\" & VbCrLf
blablabla

RS.MoveNext
loop
Avatar billede pesa Nybegynder
26. november 2001 - 20:37 #2
keysersoze>>> Kan du uddybe lidt? Hvis jeg skriver således giver det nemlig ikke det ønskede resultat:



<html>
<head>
</head>
<body>
number = 0
Do While Not rs.EOF

If farve=1 Then
bg=\"#F56E11\"
farve= farve + 1
Else
bg=\"#FFCC99\"
farve=1
End If

number = number + 1


Response.Write \"<td width=\"\"200\"\" bgcolor=\"\"\" & bg & \"\"\" height=\"\"13\"\">\" & VbCrLf
blablabla

RS.MoveNext
loop
</body>
</html>
Avatar billede keysersoze Ekspert
26. november 2001 - 20:42 #3
hov - havde set det som var det et udtræk fra en database vha asp...

så skal du nok lige glemme mit svar - sorry
Avatar billede pesa Nybegynder
26. november 2001 - 20:44 #4
Helt i orden! ;-)

Har ikke den mindste forstand på ASP, men det skal jo også læres på et tidspunkt! Men til at starte med kunne det være fedt med et script der er lidt mere simpelt! :-)
Avatar billede pesa Nybegynder
26. november 2001 - 20:45 #5
\"Simpelt\" er det forkerte ord at bruge, men i hvet fald et script, der ikke kræver kendskab til ASP!
Avatar billede olebole Juniormester
26. november 2001 - 20:49 #6
<ole>
Hvis du kalder din tabel for \'ib\' ( <tabel id=\"ib\".... ), kan du bruge dette script:

function setColors() {
    var TRarr = document.getElementById(\"ib\").getElementsByTagName(\"TR\");
    for (i=0; i<TRarr.length; i++) {
        var bg_col = (i % 2)? \"#dedede\" : \"#cccccc\";
        TRarr[i].style.backgroundColor = bg_col;
    }
}
window.onload = setColors;

/mvh
</bole>
Avatar billede pesa Nybegynder
26. november 2001 - 21:16 #7
olebole>>> Du bliver også nødt til at uddybe lidt. Jeg har kaldt min tabel for \"ib\" som du beskrev. Hvor skal det indsættes det du har skrevet? I <body>-delen? Nej vel? I <head>-delen. Muligvis men det giver ikke det ønskede resultat når jeg gør det! Vil du skære du 100% ud i pap så jeg også er med?
Avatar billede fomse Nybegynder
26. november 2001 - 22:37 #8
Jeg tror Ole mener sådan:

<html>
<head>
    <title>Untitled</title>
   
    <script>
    function setColors() {
    var TRarr = document.getElementById(\"ib\").getElementsByTagName(\"TR\");
    for (i=0; i<TRarr.length; i++) {
        var bg_col = (i % 2)? \"#dedede\" : \"#FF0000\";
        TRarr[i].style.backgroundColor = bg_col;
    }
}
window.onload = setColors;
    </script>
</head>
<body>
<table id=\"ib\" cellspacing=\"2\" cellpadding=\"2\" border=\"0\">
<tr>
    <td>Linie 1</td>
    <td>Linie 1.1</td>
</tr>
<tr>
    <td>Linie 2.1</td>
    <td>Linie 2.2</td>
</tr>
<tr>
    <td>Linie 3.1</td>
    <td>Linie 3.2</td>
</tr>
<tr>
    <td>Linie 4.1</td>
    <td>Linie 4.2</td>
</tr>
<tr>
    <td>Linie 5</td>
    <td>Linie 5.1</td>
</tr>
</table>
</body>
</html>

Fomse:-)
Avatar billede pesa Nybegynder
26. november 2001 - 22:44 #9
fomse>>> Muligvis, men resultatet bliver ikke det ønskede. Min browser siger nemlig at der er en fejl i sidens script.
Avatar billede olebole Juniormester
26. november 2001 - 22:58 #10
Jamen, så må du give os en URL, så vi kan se sidens script - for det, jeg og fomse har postet, holder fint  ;o)
/mvh
Avatar billede lerchedahl Nybegynder
27. november 2001 - 01:20 #11
Du skal smide din onLoad event ind i dit body tag!

eks.

<html>
<head>
<script>
    function setColors() {
    var TRarr = document.getElementById(\"ib\").getElementsByTagName(\"TR\");
    for (i=0; i<TRarr.length; i++) {
        var bg_col = (i % 2)? \"#dedede\" : \"#FF0000\";
        TRarr[i].style.backgroundColor = bg_col;
    }
}
</script>
</head>
<body onLoad=\"setColors();\">
<table id=\"ib\">
<tr>
  <td>blablabla</td>
</tr>
</table>
</body>
</html>

/lerchedahl
Avatar billede lerchedahl Nybegynder
27. november 2001 - 01:25 #12
Det bliver selvfølgelig bedre illustreret hvis du indsætter mere end en enkelt række, men det gik lidt stærkt ;-P

/lerchedahl
Avatar billede olebole Juniormester
27. november 2001 - 11:18 #13
Hvorfor i alverden skal han smide sin onload-handler i body-tag\'et? Den fungerer da overmåde fint, hvor den står  :o)
/mvh
Avatar billede lerchedahl Nybegynder
27. november 2001 - 17:36 #14
ja, det burde den. Men han siger jo netop at det ikke fungerer sådan. Det virker også fint med en onload event i body tag\'et... Det ku\' være han kunne få det til at virke på den måde...

/lerchedahl
Avatar billede olebole Juniormester
27. november 2001 - 19:15 #15
Fejlen ligger et andet sted - i noget andet kode. F.eks. kunne det være, han allerede bruger onload-event\'en til noget andet  ;o)
/mvh
Avatar billede pesa Nybegynder
28. november 2001 - 00:15 #16
En URL. Øhh? Jeg har endnu ikke lavet nogen side. Det jeg gør er at indsætte følgende stump i et HTML-dokument (hvilket er hvad fomse skriver):


<html>
<head>
    <title>Untitled</title>
   
    <script>
    function setColors() {
    var TRarr = document.getElementById(\"ib\").getElementsByTagName(\"TR\");
    for (i=0; i<TRarr.length; i++) {
        var bg_col = (i % 2)? \"#dedede\" : \"#FF0000\";
        TRarr[i].style.backgroundColor = bg_col;
    }
}
window.onload = setColors;
    </script>
</head>
<body>
<table id=\"ib\" cellspacing=\"2\" cellpadding=\"2\" border=\"0\">
<tr>
    <td>Linie 1</td>
    <td>Linie 1.1</td>
</tr>
<tr>
    <td>Linie 2.1</td>
    <td>Linie 2.2</td>
</tr>
<tr>
    <td>Linie 3.1</td>
    <td>Linie 3.2</td>
</tr>
<tr>
    <td>Linie 4.1</td>
    <td>Linie 4.2</td>
</tr>
<tr>
    <td>Linie 5</td>
    <td>Linie 5.1</td>
</tr>
</table>
</body>
</html>


Herefter skrives der at der opstår en fejl i sidens script. Kan det hænge sammen med at jeg bruger IE 4.0?
Avatar billede olebole Juniormester
28. november 2001 - 10:04 #17
Yeps ...denne her tager hensyn til de fleste browsere og deres \'kunnen\':

<script type=\"text/JavaScript\">
function setColors() {
    if (document.layers) return false;
    if (document.getElementById){
        TRarr = document.getElementById(\"ib\").getElementsByTagName(\"TR\");
    }
    else {
        TRarr = document.all[\"ib\"].all.tags(\"TR\");
    }
    for (i=0; i<TRarr.length; i++) {
        var bg_col = (i % 2)? \"#dedede\" : \"#FF0000\";
        TRarr[i].style.backgroundColor = bg_col;
    }
}
window.onload = setColors;
</script>

/mvh
Avatar billede olebole Juniormester
28. november 2001 - 10:10 #18
Den eneste browser, der forstår \'document.layers\' er NS4.X - og den forstår til gengæld slet ikke det, vi prøver at gøre her ....derfor returneres falsk, hvis browseren er en af den slags. Ellers burde den nu fungere overalt fra version 4 og op  ;o)
/mvh
Avatar billede pesa Nybegynder
29. november 2001 - 00:23 #19
olebole>>> Så lykkedes det. Tak for hjælpen.
Avatar billede olebole Juniormester
29. november 2001 - 00:24 #20
...anytime  ;o)
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