Avatar billede dnm Nybegynder
07. juli 2004 - 13:05 Der er 7 kommentarer

Change of TR color script.

Dette script vil jeg bruge til dynamisk at ændre tabelrække farven når der bliver trykket på den. Og scriptet virker også fint sålænge at jeg stykker på det "hvide" i rækken. Men kommer jeg til at trykke på noget tekst eller et billede så vælger scriptet de "parent" object og farverlægger det istedet, det vil sige selve tabel cellen... Er der en måde hvorpå man kan være sikker på at den vælger den første "parent" TR hvor den skal farvelægge????

Mvh
Lasse

<script>
var preEl ;
var orgBColor;
var orgTColor;
function HighLightTR(backColor,textColor,id){
  if(typeof(preEl)!='undefined') {
    preEl.bgColor=orgBColor;
    try{ChangeTextColor(preEl,orgTColor);}catch(e){;}
    }
  var el = event.srcElement;
  el = el.parentElement;
  orgBColor = el.bgColor;
  orgTColor = el.style.color;
  el.bgColor=backColor;

  try{ChangeTextColor(el,textColor);}catch(e){;}
  preEl = el;
  parent.parent.leftFrame.document.dsform.datastore.value=id;
  }

function ChangeTextColor(a_obj,a_color){  ;
  for (i=0;i<a_obj.cells.length;i++)
    a_obj.cells(i).style.color=a_color;
    }
   
</script>
Avatar billede skovenborg Nybegynder
07. juli 2004 - 14:35 #1
måske du kunne ordne det på en lidt lettere måde:
function changeColors(tr,bgcolor,fgcolor) {
        tr.style.backgroundColor = bgcolor;
        tr.style.color = fgcolor;
  }

<table>
<tr onclick="changeColors(this,'#000','#fff');"><td>Tekst</td><td>Cell2 </td></tr>
</table>
Avatar billede skovenborg Nybegynder
07. juli 2004 - 14:38 #2
eller hvis det ikke er helt nok:
  function changeColors(tr,bgcolor,fgcolor) {
        i=0;
        while (td = tr.cells[i++]) {
                td.style.backgroundColor = bgcolor;
                td.style.color = fgcolor;
        }
  }
Avatar billede dnm Nybegynder
07. juli 2004 - 14:58 #3
Ja, den farver fint!!!

Men den foregående række skal jo miste "hightlight" når du trykker på en anden TR.
Avatar billede skovenborg Nybegynder
07. juli 2004 - 15:06 #4
prøv så:
var activeTr;
  function changeColors(tr,bgcolor,fgcolor) {
        if (activeTr) {
              activeTr.style.backgroundColor = "#fff";
              activeTr.style.color = "#000";
        }
        tr.style.backgroundColor = bgcolor;
        tr.style.color = fgcolor;
        activeTr = tr;
  }
Avatar billede dnm Nybegynder
08. juli 2004 - 07:21 #5
Det virker, tak.
Avatar billede dnm Nybegynder
08. juli 2004 - 07:40 #6
Et lille relateret spørgsmål... Nu har jeg i hver TR en Tabel som jeg har gemt med Style="display: none" Jeg har givet hver tabel et et id="option<%=Recordset("id")%>".

Nu vil jeg så gerne have at tabellen i TR'en bliver vist sammen med at den bliver Hightlightet og forsvinder igen når TR'en ikke er hightlightet mere...

Kan det lade sig gøre?...
Avatar billede skovenborg Nybegynder
08. juli 2004 - 22:01 #7
du kunne lave et ekstra arment til funktionen:
<tr onclick="changeColors(this,'#000','#fff','option<%=Recordset("id")%>');">

og så ændre funktionen lidt:
var activeTr;
var activeID;
  function changeColors(tr,bgcolor,fgcolor,tabelID) {
        if (activeTr) {
              activeTr.style.backgroundColor = "#fff";
              activeTr.style.color = "#000";
              document.getElementById(activeID).style.display = "none";
        }
        tr.style.backgroundColor = bgcolor;
        tr.style.color = fgcolor;
        document.getElementById(tabelID).style.display = "block";
        activeTr = tr;
        activeID = tabelID;
  }
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