当我将鼠标悬停在X框上时,我想改变商店x的颜色,反之亦然。
<!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> </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> </p>
</body>
</html>
答案 0 :(得分:0)
由于这是家庭作业,我不打算给你完整的代码。但是,为了让您了解如何在选择器中使用ID(它实际上只是连接字符串),我将向您展示如何将所有#c1... #c4
悬停函数聚合到此:
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');
});
为简单起见,我假设c1 - c4的类为“category”,但您也可以将选择器编写为"#c1,#c2,#c3,#c4"
。
作为另一个提示,你可以在一个元素上有多个类,比如class="shop s1"
,然后是class="shop s2"
的另一个元素,这样你就可以$('.shop')
代替{{1} }}
答案 1 :(得分:0)
对于初学者,您在页面上有多个具有相同ID的元素。元素ID必须是唯一的。即使你的逻辑正确,这也行不通。你最好完全省略id并使用类:商店的一个类和类别的一个类,虽然看起来好像你可以在位置上做商店部分 - 计算表中的行/列并突出显示相同的行/另一个表中的列。但是,类更容易。您还可以将ID用于实际商店列 - 与商店选择器的类匹配。
注意,我也使用CSS类来进行突出显示,而不是直接更改元素上的CSS。它可以更容易地重置任何以前突出显示的元素上的颜色。
<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');
}
});
然后您的选择器表列看起来像。
<td class="shop-selector shop1">1</td>
<td class="shop-selector shop2">2</td>
和您的商店专栏一样
<td id="shop1" class="shop">Shop 1</td>
<td id="shop2" class="shop">Shop 2</td>
对于您的类别,您应该改为创建组ID类并执行类似的操作。