Avatar billede ripley Nybegynder
31. oktober 2006 - 14:06 Der er 3 kommentarer og
1 løsning

Mouse-over på TR'er men undtagen én

Hej!

Jeg har en række tabeller (mange) hvor jeg skal have mouse-over på TR'er .. undtagen én.

Det er den TR, hvor der står "Her er en overskrift" - den skal slet ikke have nogen mouse-over-effekt. Kan man gøre noget ved det?

Det ser således ud:

<HTML>
<Head>
<Script language="javascript">
    aMouseOver=["#006699", "#FFFFFF"];
    aMouseSelected=[ "#F1861E", "#FFFFFF" ];

    ahrefover=[ "#006699", "#ffffff" ];
    ahrefout=[ "#ffffff", "#0000ff" ];

var gSafeOnload = new Array();
function SafeAddOnload(f)
{
    window.onload = SafeOnload;
    gSafeOnload[gSafeOnload.length] = f;
}
function SafeOnload()
{
    for (var i=0;i<gSafeOnload.length;i++){
        gSafeOnload[i]();
     
    }
}

    var oActiveTable = {
    gemtColor : new Array(),
    // hardwired styles for max perfomance
    aHover        : [ "#006699", "#FFFFFF" ],
 
    mInit : function () {
        if (typeof aMouseOver=="object"){oActiveTable.aHover=aMouseOver;}
        // collect active tables
        var aTables = document.getElementsByTagName ( "table" );
        var oTable, i = 0;
        while ( oTable = aTables.item ( i++ )) {
            if ( oTable.className.indexOf("mouseoverActive")>-1 ) {
                oTable.onmouseover    = oActiveTable.mCheck;
                oTable.onmouseout      = oActiveTable.mCheck;
                oTable.onmousedown    = oActiveTable.mCheck;

            }
        }
    },
    mCheck : function ( e ) { // check mouse action
        var e = e ? e : window.event;
        var oNode = e.target ? e.target : e.srcElement;
        while ( oNode.nodeName.toLowerCase () != "tr" &&  oNode.nodeName.toLowerCase () != "table" ) oNode =

oNode.parentNode;
     
        if ( oNode.nodeName.toLowerCase () == "table" ) return;
        else var oRow = oNode;
     
        oActiveTable.mUpdate ( oRow, e.type == "mouseover" ? "over" : "out" );
     
    },
    mUpdate : function ( oRow, sAction ) { // update display

        var update = function ( oCell, aColors,aColors2 ) {


ahrefs=oCell.getElementsByTagName("a");
for(j=0,j2=ahrefs.length;j<j2;j++){
  ahrefs[j].style.background=aColors2[0];
  ahrefs[j].style.color=aColors2[1];
}



            oCell.style.backgroundColor = aColors [ 0 ];
            oCell.style.color = aColors [ 1 ];
        }
        var gem = function ( oCell, aGemaColors,nr ) {
            if (aGemaColors[nr]==null){
                aGemaColors[nr]=new Array(2);
            }
            aGemaColors[nr][ 0 ] = oCell.style.backgroundColor;
            aGemaColors[nr][ 1 ] = oCell.style.color;
        }
        var i = 0, oCell, aColors, aCells = oRow.getElementsByTagName ( "td" );
        while ( oCell = aCells.item ( i )) {
            switch ( sAction ) {
                case "over" :
                                    gem    (oCell, oActiveTable.gemtColor, i);
                    update ( oCell, oActiveTable.aHover,ahrefover );
                    break;
                case "out" :
                    update ( oCell, oActiveTable.gemtColor[i],ahrefout);
                    break;
            }
            i++;
        }

    }
}

SafeAddOnload(oActiveTable.mInit);

</script>
</head>
<BODY>
<table width="100%" cellspacing="0" cellpadding="0" border="0" class="mouseoverActive">
<tr>
    <td colspan="2">Her er en overskrift</td>
</tr>
<tr>
<td><A href="">dette er en test</A></td><td>Her er noget skrift</td>
</tr>
</body>
</HTML>
Avatar billede psykochicken Nybegynder
31. oktober 2006 - 15:18 #1
prøv med:

        .............resten af scriptet.........
        var i = 0, oCell, aColors, aCells = oRow.getElementsByTagName ( "td" );
        while ( oCell = aCells.item ( i )) {
        if(aCells[i].id!="tdnix"){ //Undtager cellen med id=tdnix
            switch ( sAction ) {
                case "over" :
                                    gem    (oCell, oActiveTable.gemtColor, i);
                    update ( oCell, oActiveTable.aHover,ahrefover );
                    break;
                case "out" :
                    update ( oCell, oActiveTable.gemtColor[i],ahrefout);
                    break;
            }
            i++;
        }
        else{
        return false;
        }
        }

    }
}

SafeAddOnload(oActiveTable.mInit);

</script>
</head>
<BODY>
<table width="100%" cellspacing="0" cellpadding="0" border="0" class="mouseoverActive">
<tr onmouseover="return false;">
    <td id="tdnix" colspan="2">Her er en overskrift</td>
</tr>
<tr>
<td><A href="">dette er en test</A></td><td>Her er noget skrift</td>
</tr>
</body>
</HTML>

/psc
Avatar billede ripley Nybegynder
08. november 2006 - 10:23 #2
Det var genialt .. kunne man evt. spørge på, om td'ens class var sådan og sådan, dét ville godt nok spare mig meget arbejde - i stedet for at spørge på id'er?

Jeg prøvede med:
if(aCells[i].class!="tdnix"){ //Undtager cellen med id=tdnix

.. men så virker det slet ikke.
Avatar billede ripley Nybegynder
08. november 2006 - 11:21 #3
Fandt selv ud af det :

if (aCells[i].className != "tdnix")
{
  ...
}

psychochicken - du skal lige have points, poster du et svar :o)
Avatar billede psykochicken Nybegynder
08. november 2006 - 13:14 #4
kommer her ;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