我正在使用tutorial from Imar Spaanjaars' web site使整个表格行可点击并对其产生悬停效果。一旦用户将鼠标悬停在表格行上,它就会删除该行的预定义背景颜色。我想这样做它不会覆盖这种风格。我怎么能这样做?
<script type="text/javascript">
function ChangeColor(tableRow, highLight)
{
if (highLight)
{
tableRow.style.backgroundColor = '#dcfac9';
}
else
{
tableRow.style.backgroundColor = 'white';
}
}
function DoNav(theUrl)
{
document.location.href = theUrl;
}
</script>
如果您有更好的建议来完成这项任务,我很乐意听到它们!
我的tr标签中有一个bgcolor标签,如果已经读取了特定的邮件,则由我的php设置。
答案 0 :(得分:5)
如果原始背景颜色是通过样式表或(在您的情况下)指定遗留bgcolor
属性,那么您可以在完成后清除元素上的样式,它将会还原:
function ChangeColor(tableRow, highLight)
{
if (highLight)
{
tableRow.style.backgroundColor = '#dcfac9';
}
else
{
tableRow.style.backgroundColor = '';
}
}
那就是说,你可能最好使用CSS类和相关规则来表示行的突出显示状态,并根据需要添加/删除它:
tr { backgroundColor: <whatever> }
tr.highlighted { backgroundColor: #dcfac9 }
然后您的Javascript变为
function ChangeColor(tableRow, highLight) {
if(highLight)
{
tableRow.className = 'highlighted';
}
else
{
tableRow.className = '';
}
}
除了保留脚本和标记之外的特定样式(随着时间的推移它们变得难以维护),您还可以添加或更改悬停样式(例如,粗体文本或边框) )而不会增加代码的复杂性。
如果您可以访问Prototype,Ext.js或Dojo等Javascript库,那么您可以使用其类操作函数,这将处理您想要的情况保留现有的className,或者在单个元素上使用多个类。