我希望该行保持正确的类

时间:2012-02-22 12:30:03

标签: javascript css html-table

我将它用于行颜色:

 echo"<tr class=\"normal\" onClick=\"this.className='normalselected'\" 
           onmouseover=\"this.className='normalon'\" 
           onmouseout=\"this.className='normal'\">\n";

当你移动时它起作用,只有当我移动到另一行时它才会恢复正常时它才有效。

我该如何更改?

3 个答案:

答案 0 :(得分:1)

那是因为onmouseout让它恢复正常;你需要的是记住你点击的时间。虽然这不是一个“好”的解决方案,但它应该做你想做的事情

在你的CSS中

.normal-clicked,
.normal-over { 
     /* whatever needs to go here */
}
.normal {
     /* whatever needs to go here */
}

然后在php中

?>
<script type="text/javascript">
    function handleClick( el ){
        if ( el.className == 'normal-clicked' ){
            el.className = 'normal';
        }
        else {
            el.className = 'normal-clicked';
        }
    }
    function handleMouseOver( el ){
        el.className = 'normal-over';
    }
    function handleMouseOut( el ){
        if ( el.className == 'normal-over' ){
            el.className = 'normal';
        }
    }
</script>
<?php
echo '<tr class="normal" onclick="handleClick(this);" onmouseover="handleMouseOver(this);" onmouseout="handleMouseOut(this);">', "\n";

答案 1 :(得分:1)

echo "<tr class=\"normal\" onclick=\"this.className='normalselected'\" 
       onmouseover=\"if (!/normalselected/gi.test(this.className)) this.className='normalon'\" 
       onmouseout=\"if (!/normalselected/gi.test(this.className)) this.className='normal'\">\n";

虽然我会认真考虑使用CSS悬停和正确的事件监听器。

答案 2 :(得分:1)

即使我不同意你这样做的方式,也只是回答你的问题:你正在删除mouseout事件中正常选择的类,这是正常的。你可以通过添加像

这样的条件来防止这种情况
if('normalon' == this.className)

到你的mouseout事件处理程序

你也可能想要阻止在你再次来到已选择的行时添加normalon类..所以你需要添加像

这样的东西
if('normal' == this.className) 

到你的onmouseover属性..但你应该考虑使用函数而不是所有这些条件,如果你打算坚持使用javascript