2010-07-05 5 views
0

Je veux changer la couleur de la boutique x lorsque je passe la souris sur la Xbox et vice versa.sélecteurs avec variables

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script> 
<script> 

$(document).ready(function(){ 
    $("#c1").hover(function(){ 
    $("[id='gp1']").attr("bgcolor","#FF0000"); 
    }, function(){ 
    $("[id='gp1']").attr("bgcolor","#FFFFFF"); 
    } 
); 
    $("#c2").hover(function(){ 
    $("[id='gp2']").attr("bgcolor","#0000FF"); 
    }, function(){ 
    $("[id='gp2']").attr("bgcolor","#FFFFFF"); 
    } 
); 
    $("#c3").hover(function(){ 
    $("[id='gp3']").attr("bgcolor","#FFFF00"); 
    }, function(){ 
    $("[id='gp3']").attr("bgcolor","#FFFFFF"); 
    } 
); 
    $("#c4").hover(function(){ 
    $("[id='gp4']").attr("bgcolor","#00FF00"); 
    }, function(){ 
    $("[id='gp4']").attr("bgcolor","#FFFFFF"); 
    } 
); 
     $('*[class^=s]').hover(function(){ 
     var group=$(this).attr("id"); 
     var classname=$(this).attr("class"); 
     var $jqname="$(\"[class=\'" + classname + "\']\")" 
     alert(group); 
     alert(classname); 
     alert($jqname); 
     var colour; 
     if(group="gp1"){ 
     colour="#FF0000" 
     $jqname.attr("bgcolor","#FFFF00"); 
     }else if(group="gp2"){ 
     colour="#0000FF" 
     $jqname.attr("bgcolor","#FFFF00"); 
     }else if(group="gp3"){ 
     colour="#FFFF00" 
     $jqname.attr("bgcolor","#FFFF00"); 
     }else{ 
     colour="#00FF00" 
     $jqname.attr("bgcolor","#FFFF00"); 
     } 
    }, function(){ 
    $jqname.attr("bgcolor","#FFFFFF"); 
    } 
); 
}); 

</script> 
<meta http-equiv="Content-Type" content="text/html; charset=big5"> 
<title>Document</title> 
<style type="text/css"> 
<!-- 

td {font-size: 24px; font-family: Arial, Helvetica, sans-serif; } 
--> 
</style> 
</head> 

<body> 
<table width="565" height="126" border="1"> 
    <tr> 
    <td id="gp1" class="s1">1</td> 
    <td id="gp2" class="s2">2</td> 
    <td id="gp4" class="s3">3</td> 
    <td id="gp3" class="s4">4</td> 
    </tr> 
    <tr> 
    <td id="gp4" class="s5">5</td> 
    <td id="gp1" class="s6">6</td> 
    <td id="gp2" class="s7">7</td> 
    <td id="gp3" class="s8">8</td> 
    </tr> 
    <tr> 
    <td id="gp3" class="s9">9</td> 
    <td id="gp2" class="s10">10</td> 
    <td id="gp4" class="s11">11</td> 
    <td id="gp1" class="s12">12</td> 
    </tr> 
    <tr> 
    <td id="gp3" class="s13">13</td> 
    <td id="gp4" class="s14">14</td> 
    <td id="gp2" class="s15">15</td> 
    <td id="gp1" class="s16">16</td> 
    </tr> 
</table> 
<p>&nbsp;</p> 
<table width="260" height="64" border="1"> 
    <tr> 
    <td width="119" height="29" bgcolor="#FF0000" id="c1">Category 1</td> 
    <td width="125" bgcolor="#0000FF" id="c2">Category 2</td> 
    </tr> 
    <tr> 
    <td height="27" bgcolor="#FFFF00" id="c3">Category 3</td> 
    <td bgcolor="#00FF00" id="c4">Category 4</td> 
    </tr> 
</table> 
<table width="500" height="175" border="1"> 
    <tr> 
    <td id="gp1" class="s1">Shop1</td> 
    <td id="gp2" class="s2">Shop2</td> 
    <td id="gp4" class="s3">Shop3</td> 
    <td id="gp3" class="s4">Shop4</td> 
    </tr> 
    <tr> 
    <td id="gp4" class="s5">Shop5</td> 
    <td id="gp1" class="s6">Shop6</td> 
    <td id="gp2" class="s7">Shop7</td> 
    <td id="gp3" class="s8">Shop8</td> 
    </tr> 
    <tr> 
    <td id="gp3" class="s9">Shop9</td> 
    <td id="gp2" class="s10">Shop10</td> 
    <td id="gp4" class="s11">Shop11</td> 
    <td id="gp1" class="s12">Shop12</td> 
    </tr> 
    <tr> 
    <td id="gp3" class="s13">Shop13</td> 
    <td id="gp4" class="s14">Shop14</td> 
    <td id="gp2" class="s15">Shop15</td> 
    <td id="gp1" class="s16">Shop16</td> 
    </tr> 
    <tr> 

    </tr> 
</table> 
<p>&nbsp;</p> 
</body> 
</html> 
+1

Si c'est votre devoir, vous devriez le faire vous-même. Avez-vous déjà essayé? – Marks

+1

Aussi, votre urgence n'est pas l'urgence de tout le monde. Par conséquent, vous ne devriez pas écrire URGENT dans les majuscules gras dans le titre de votre question - les gens ne vous aideront pas plus vite. Je soupçonne que vous avez eu tout le temps pour vos devoirs que vous avez choisi de dépenser autrement, ce qui ne vous aide pas vraiment. ;-) – Tomalak

+0

Désolé mais je l'ai essayé pendant une semaine. J'ai essayé googleing et essayé beaucoup de codes différents, mais aucun d'eux n'est bon, alors je suis venu ici pour obtenir de l'aide. Je suis vraiment urgent mais si je vous en veux, je m'en excuse. – mickey159

Répondre

0

Comme c'est un devoir, je ne vais pas vous donner le code complet. Cependant, pour vous donner une idée de la façon dont vous pouvez utiliser les ID dans les sélecteurs (il est vraiment juste sur les chaînes concaténer), je vais vous montrer comment vous pouvez regrouper tous vos #c1... #c4 fonctions de vol stationnaire en ceci:

function bgColorLookup(id) { 
    var colors = ["#FF0000", "#0000FF", "#FFFF00", "#00FF00"]; 
    return colors[id]; 
} 

$(".category").hover(function(){ 
    var id = $(this).attr('id').substring(1); 
    $("[id=gp" + id + "]".attr(bgcolor, bgColorLookup(id)); 
}, function() { 
    $("[id=gp" + $(this).attr('id').substring(1) + "]".attr(bgcolor, '#FFFFFF'); 
}); 

Pour simplicité, j'ai supposé la classe "catégorie" pour c1 - c4, mais vous pouvez également écrire le sélecteur comme "#c1,#c2,#c3,#c4".

Comme un autre indice, vous pouvez avoir plus d'une classe sur un élément, disons class="shop s1" puis un autre élément avec class="shop s2", de sorte que vous pouvez faire $('.shop') au lieu de $('*[class^=s]')

0

Pour commencer, vous avez plusieurs éléments sur la page avec le même id. Les identifiants d'éléments doivent être uniques. Même si vous obtenez votre logique correcte, cela ne fonctionnera pas. Il serait préférable d'omettre entièrement les identifiants et d'utiliser des classes: une classe pour le magasin et une pour la catégorie, bien qu'il semble que vous puissiez positionner la partie de la boutique - calculer la ligne/colonne dans le tableau et mettre en surbrillance la même rangée/colonne dans l'autre table. Les cours seraient plus faciles, cependant. Vous pouvez également utiliser des identifiants pour les colonnes de la boutique, qui correspondent à la classe du sélecteur de magasin. Remarque: j'utiliserais également les classes CSS pour effectuer la surbrillance plutôt que de modifier directement le CSS sur l'élément. Il sera plus facile de réinitialiser les couleurs sur tous les éléments précédemment mis en évidence.

<style type="text/css"> 
.highlight { background-color: #FFFF00; } 
</style> 

$('.shop-selector').hover(function() { 
     $('.shop').removeClass('highlight'); 
     var shop = $(this).attr('class').replace('/\s*\.shop-selector\s*/',''); 
     $('#' + shop).addClass('highlight'); 
    }, 
    function() { 
     var shop = $(this).attr('class').replace('/\s*\.shop-selector\s*/',''); 
     $('#' + shop).removeClass('highlight'); 
    } 
}); 

Ensuite, vos colonnes de table de sélecteur ressemblent à.

<td class="shop-selector shop1">1</td> 
<td class="shop-selector shop2">2</td> 

et votre colonne boutique comme

<td id="shop1" class="shop">Shop 1</td> 
<td id="shop2" class="shop">Shop 2</td> 

Pour vos catégories, vous devez faire les GID des classes au lieu et faire quelque chose de similaire.