Avatar billede dark-nisse Nybegynder
06. september 2001 - 15:49 Der er 12 kommentarer og
4 løsninger

TR oplysning

http://weirdo.dk/shop/index.php?open=show&katid=2

how får jeg javascriptet til at oplyse hele TR\'et og ik kun den ene TD??
Avatar billede tdimhcs Nybegynder
06. september 2001 - 15:58 #1
Sådan:

<script language=\"JavaScript\">
<!--
function rowOver(){
    lmnt = window.event.srcElement;
    if (lmnt.tagName.toUpperCase() == \'TABLE\')
        return;
    while (lmnt.tagName.toUpperCase() !=\'TR\')
        lmnt = lmnt.parentElement;
    lmnt.style.background = \"#eeeeee\";
}

function rowOut(){
    lmnt = window.event.srcElement;
    if (lmnt.tagName.toUpperCase() == \'TABLE\')
        return;
    while (lmnt.tagName.toUpperCase() !=\'TR\')
        lmnt = lmnt.parentElement;
    lmnt.style.background =\"\";
}
// -->
</script>

Og her rækken:
<tr onmouseover=\"rowOver();\" onmouseout=\"rowOut();\">


Kurt
Avatar billede dark-nisse Nybegynder
06. september 2001 - 16:02 #2
funker ik
Avatar billede olebole Juniormester
06. september 2001 - 16:51 #3
<ole>
Gider du uddybe dit problem?
/mvh
</bole>
Avatar billede ldanielsen Nybegynder
06. september 2001 - 19:20 #4

function trRoll(stId,n){
  if (document.all){
    if (i==1){
      document.all[stId].style.backgroundColor = \"#c4c4c4\"
      }
    if (i==0){
      document.all[stId].style.backgroundColor = \"#e0e0e0\"
      }
    }
  }


Og:

<table width=\"550\" cellspacing=\"1\" cellpadding=\"3\" border=\"0\">
  <tr valign=\"top\">
    <td align=\"left\" bgcolor=\"#7a7a7a\"><b>Vare Navn</b></td>
    <td align=\"left\" bgcolor=\"#7a7a7a\"><b>Beskrivelse</b></td>
    <td align=\"left\" bgcolor=\"#7a7a7a\"><b>Pris (Ex. Moms)</b></td>
    <td align=\"left\" bgcolor=\"#7a7a7a\"><b>Info</b></td>
  </tr>
  <tr id=\"tr1\" onmouseover=\"trRoll(\'tr1\', 1);\" onmouseout=\"trRoll(\'tr1\', 0);\" style=\"Cursor: \'hand\';\">
    <td bgcolor=\"#dadada\">HP PHOTOSMART C912 DIG. KAMERA</td>
    <td bgcolor=\"#dadada\">2,24 MEGAPIXEL,1600X1280 PIXELS</td>
    <td align=\"right\" nowrap bgcolor=\"#dadada\">7138,75 kr.&nbsp;(5710)&nbsp;&nbsp;</td>
    <td align=\"center\" bgcolor=\"#dadada\"><A HREF=\"java script:NewWin(\'vareinfo.php?id=1\')\" onFocus=\'blur()\'>Vis</a></td>
  </tr>
  <tr id=\"tr2\" onmouseover=\"trRoll(\'tr2\', 1);\" onmouseout=\"trRoll(\'tr2\', 0);\" style=\"Cursor: \'hand\';\">
    <td  bgcolor=\"#dadada\">HP PHOTOSMART C912 DIG. KAMERA</td>
    <td bgcolor=\"#dadada\">2,24 MEGAPIXEL,1600X1280 PIXELS</td>
    <td align=\"right\" nowrap bgcolor=\"#dadada\">7138,75 kr.&nbsp;(5710)&nbsp;&nbsp;</td>
    <td align=\"center\" bgcolor=\"#dadada\"><A HREF=\"java script:NewWin(\'vareinfo.php?id=2\')\" onFocus=\'blur()\'>Vis</a></td>
  </tr>
</table>

Avatar billede olebole Juniormester
06. september 2001 - 19:24 #5
Er der ikke bare én, der gider skrive, hvad han skal have oplyst...?!?!?!
Avatar billede ldanielsen Nybegynder
06. september 2001 - 20:08 #6
Tja, siden melder fejl, så det er ikke så let ...

Men han vil have baggrundsfarven i en hel tr til at skifte ved mouseover
Avatar billede olebole Juniormester
06. september 2001 - 20:28 #7
Dine i\'er i if-sætningerne skal være n\'er. Men er det her ikke lidt mere elegant:

function trRoll(which,n){
  if (!document.layers){
    if (n==1){
      which.style.backgroundColor = \"#c4c4c4\"
    }
    else {
      which.style.backgroundColor = \"#e0e0e0\"
    }
  }
}

...og så et kald:
<tr id=\"tr1\" onmouseover=\"trRoll(this, 1);\" onmouseout=\"trRoll(this, 0);\" style=\"Cursor: \'hand\';\">

/mvh
Avatar billede olebole Juniormester
06. september 2001 - 20:32 #8
Der var lidt overflødigt fedt! Denne her er betydelig slankere:

function trRoll(which,n){
  which.style.backgroundColor = (n==1)? \"#c4c4c4\" : \"#e0e0e0\";
}

/mvh
Avatar billede ldanielsen Nybegynder
06. september 2001 - 23:02 #9
olebole > Ang i og n - du har ret

Ang: this m.m.: Jeg er stadig miljøskadet, fra den tid hvor msie 3 var det nyeste, og javascript på det nærmeste var forbeholdt netscape. Jeg har vænnet mig at adressere tingene helt ud, så jeg skriver stadig document.myForm, window.location osv. Jeg ved godt at det jeg laver nu alligevel kun virker 100% i msie 4 eller mere, men det kan også fungere i NS4, og det er jeg lidt glad for (uden nogen fornuftig grund).

Hvis der ikke er andre grunde til at forkorte end at spare et par bogstaver (og gøre det slankere eller mere elegant), så skriver jeg det helt ud.

Men jeg kan godt forstå at du synes det er sjovt og tilfredsstillende at \"koge det ned\".

Hilsen Lars
Avatar billede olebole Juniormester
06. september 2001 - 23:16 #10
Hvis du skriver store og komplicerede scripts, er det en stor fordel at koge det ned. Det er så sandelig ikke for morskab eller personlig tilfredsstillelse  :)
Dels er kortere scripts lettere overskuelige og dels \'vejer\' de ikke så meget ved download og endelig eksekveres de hurtigere.

Jeg synes, det er yderst fornuftigt at supportere NS4.x. Hvis du checker mine besvarelser her på Eksperten, vil du finde ud af, at et af mine øgenavne er \"The NetScape Warrior\"!
Hvor jeg arbejder nu, er standard kravspecs IE4+ og NS6+ (NS4.x koster ekstra) - men indtil fornylig sad jeg i en fundamentallistisk \'interface developer\' gruppe, hvor NS4.x var et \'must\'.

Iøvrigt tager NS4.x slet ikke mouse-events på <tr> - og kan heller ikke ændre baggrundsfarve på samme, så dette script vil aldrig kunne komme til at køre i NS4.x.
/mvh
Avatar billede olebole Juniormester
06. september 2001 - 23:20 #11
PS: NS4.x forstår sagtens referencer med \'this\' - og \'location\' for \'window.location\'  :)
Avatar billede roenving Novice
07. september 2001 - 02:15 #12
Og et
PPS:

Vores opgave som udviklere (i hvert fald i dette panel !·] ) må vel principielt også være at understøtte *så meget som muligt inden for rimelighedens grænser*.

Det kan da godt være, at der er under 10 (eller 5)%, som bruger NS4, men hvis vi snakker om 3-cifrede mio-tal, som brugere på verdens-plan, så er bare 0,001 % over 10.000 brugere.

Så etikken må sige: Kan jeg, så skal jeg !!

Hvis du føler, det er et must, at du kan et eller andet, som bare ikke kan lade sig gøre i ie5- eller ns6- (4-3-2-1), jamen så *er* det i orden, men els så (syns jeg!!) handler det om, at vi her hver gang gør opmærksom på (den eventuelle) mangel i brugbarhed.

mvh
jes
Avatar billede jakoba Nybegynder
11. september 2001 - 11:27 #13
Jeg gætter på at groblemet er at du skal have sat farve i alle TD-cellerne i den TR, snarere end i selve TR-en.
TD-cellerne ligger jo ovenpå din TR så en evt baggrundsfarve i cellen vil blive vist fremfor TR-farven nedenunder.

så, med udgangspunkt i jurt-ss\'s næsten rigtige script, vil jeg foreslå:

<script language=\"JavaScript\">
<!--
function rowOver(){
    lmnt = window.event.srcElement;
    while (  lmnt && lmnt.tagName.toUpperCase() !=\'TR\' )
        lmnt = lmnt.parentElement;
    if ( lmnt ) {      // hvis vi fandt en tr \'over\' det aktive element
        var rowTDs = lmnt.children;
        for (var i=0; rowTDs.length>i; i++ ) {
            // - - - - skift farve i hver TD i den TR
            if ( !rowTDs[i].oldfarve )
                rowTDs[i].oldfarve = rowTDs[i].style.background;
            rowTDs[i].style.background = \"#123456\";
        }
        // - - - - skift også TR-farven for en sikkerhes skyld
        if ( !rowTDs[i].oldfarve )
            rowTDs[i].oldfarve = rowTDs[i].style.background;
        lmnt.style.background = \"#123456\";
    }
}; //end rowOver()

function rowOut(){
    lmnt = window.event.srcElement;
    while (  lmnt && lmnt.tagName.toUpperCase() !=\'TR\' )
        lmnt = lmnt.parentElement;
    if ( lmnt ) {      // hvis vi fandt en tr \'over\' det aktive element
        var rowTDs = lmnt.children;
        for (var i=0; rowTDs.length>i; i++ ) {
            // - - - - skift farve i hver TD i den TR
            rowTDs[i].style.background = rowTDs[i].oldfarve;
        }
        // - - - - skift også TR-farven for en sikkerhes skyld
        lmnt.style.background = rowTDs[i].oldfarve;
    }
}; //end rowOut()
// -->
</script>

mvh JakobA
Avatar billede jakoba Nybegynder
11. september 2001 - 11:31 #14
Ups.  De 2 steder der skiftes frarve op TR\'en skal det da være

        // - - - - skift også TR-farven for en sikkerhes skyld
        if ( !lmnt.oldfarve )
            lmnt.oldfarve = lmnt.style.background;
        lmnt.style.background = \"#123456\";

og
        // - - - - skift også TR-farven for en sikkerhes skyld
        lmnt.style.background = lmnt.oldfarve;
Avatar billede dark-nisse Nybegynder
29. oktober 2001 - 14:29 #15
hmmmm alle få en bid af kagen 25/25/25/25
Avatar billede olebole Juniormester
29. oktober 2001 - 14:30 #16
...thnx  ;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