JS实现自动与鼠标交互滑动区域的通用封装方案

作者:纸飞机时间:2026-10-22 03:11:45浏览:105

本文探讨如何实现兼具自动播放与鼠标交互功能的滑动区域。针对初始代码在页面存在多个实例时需重复编写JS函数的冗余问题,重点讨论将其封装为通用函数或类的必要性。通过解决多个滑动区域同时存在时的初始化冲突、默认项显示异常及自动播放失效等技术难点,旨在提供一套精简且可复用的JavaScript解决方案。

<style type="text/css"> <!-- body{text-align:center;} table{width:500px; margin:0px auto;} td{padding:5px; font-weight:bold; text-align:center;} .iborder{border:1px #333333 solid; margin-top:5px;} .topnavon{background:#FFCC00; cursor:pointer;} .topnavoff{background:#000000; color:#FFFFFF;} --> </style>  <h1 align="center" style="color:#FF0000;">自动滑动+鼠标滑动区域</h1> <div align="center" style="color:#FF0000;">10秒自动跳转</div> <table width="100%" border="0" cellspacing="0" cellpadding="0" class="iborder">   <tr>     <td> <table width="100%" border="0" cellspacing="0" cellpadding="0">   <tr>     <td class="topnavon" id="clipNum1" onMouseOver="clip_Switch(1); return false;">热点聚焦</td>     <td class="topnavoff" id="clipNum2" onMouseOver="clip_Switch(2); return false;">图说新闻</td>     <td class="topnavoff" id="clipNum3" onMouseOver="clip_Switch(3); return false;">经济新闻</td>   </tr> </table> <table width="100%" border="0" cellspacing="0" cellpadding="0">   <tr>     <td id="newsbox1" style="display:block;"><h1>新闻1</h1></td>   </tr>   <tr>     <td id="newsbox2" style="display:none;"><h1>新闻2</h1></td>   </tr>   <tr>     <td id="newsbox3" style="display:none;"><h1>新闻3</h1></td>   </tr> </table>     </td>   </tr> </table>   <div align="center" style="color:#FF0000;">5秒自动跳转</div> <table width="100%" border="0" cellspacing="0" cellpadding="0" class="iborder">   <tr>     <td> <table width="100%" border="0" cellspacing="0" cellpadding="0">   <tr>     <td class="topnavon" id="ecNav1" onMouseOver="ecNavOn(1); return false;">财经要闻</td>     <td class="topnavoff" id="ecNav2" onMouseOver="ecNavOn(2); return false;">财经观察</td>     <td class="topnavoff" id="ecNav3" onMouseOver="ecNavOn(3); return false;">独家点评</td>     <td class="topnavoff" id="ecNav4" onMouseOver="ecNavOn(4); return false;">湘股在线</td>     <td class="topnavoff" id="ecNav5" onMouseOver="ecNavOn(5); return false;">财富排行榜</td>   </tr> </table> <table width="100%" border="0" cellspacing="0" cellpadding="0">   <tr>     <td id="ecBox1" style="display:block;"><h1>财经1</h1></td>   </tr>   <tr>     <td id="ecBox2" style="display:none;"><h1>财经2</h1></td>   </tr>   <tr>     <td id="ecBox3" style="display:none;"><h1>财经3</h1></td>   </tr>   <tr>     <td id="ecBox4" style="display:none;"><h1>财经4</h1></td>   </tr>   <tr>     <td id="ecBox5" style="display:none;"><h1>财经5</h1></td>   </tr> </table>     </td>   </tr> </table>  <h1 align="center" style="color:#FFCC00; font-size:150px; margin:0px auto;">!</h1> <p style="font-size:12px; text-align:left;"> 这个虽然效果不错,但是如果一个页面有多个这样的效果,就要针对每一部分写多个JS函数,那就太蠢了。其实只有控件名称不同而已,<span style="color:#FF0000;">求高手改进成一个通用函数或者类来调用</span>,不胜感激。 </p>

自动与鼠标交互滑动区域的通用封装需求

注意:引入外部JavaScript代码后,通常需要刷新页面才能使其生效。


虽然当前的滑动效果表现良好,但如果一个页面中包含多个此类效果,就需要针对每一个部分单独编写JS函数,这种做法显然不够高效。实际上,不同部分仅控件名称存在差异。因此,寻求一种改进方案,将其封装为一个通用的函数或类以便调用,将不胜感激。


<style type="text/css"> <!-- body{text-align:center;} table{width:500px; margin:0px auto;} td{padding:5px; font-weight:bold; text-align:center;} .iborder{border:1px #333333 solid; margin-top:5px;} .topnavon{background:#FFCC00; cursor:pointer;} .topnavoff{background:#000000;color:#FFFFFF;} --> </style>  <h1 align="center" style="color:#FF0000;">自动滑动+鼠标滑动区域</h1> <table width="100%" border="0" cellspacing="0" cellpadding="0" class="iborder">   <tr>     <td> <table width="100%" border="0" cellspacing="0" cellpadding="0">   <tr>     <td class="topnavon" id="clipNum1" onMouseOver="clip_Switch('clipNum','newsbox',1,3); return false;">热点聚焦</td>     <td class="topnavoff" id="clipNum2" onMouseOver="clip_Switch('clipNum','newsbox',2,3); return false;">图说新闻</td>     <td class="topnavoff" id="clipNum3" onMouseOver="clip_Switch('clipNum','newsbox',3,3); return false;">经济新闻</td>   </tr> </table> <table width="100%" border="0" cellspacing="0" cellpadding="0">   <tr>     <td id="newsbox1" style="display:block;"><h1>新闻1</h1></td>   </tr>   <tr>     <td id="newsbox2" style="display:none;"><h1>新闻2</h1></td>   </tr>   <tr>     <td id="newsbox3" style="display:none;"><h1>新闻3</h1></td>   </tr> </table>     </td>   </tr> </table>  <table width="100%" border="0" cellspacing="0" cellpadding="0" class="iborder">   <tr>     <td> <table width="100%" border="0" cellspacing="0" cellpadding="0">   <tr>     <td class="topnavon" id="ecNav1" onMouseOver="clip_Switch('ecNav','ecBox',1,5); return false;">财经要闻</td>     <td class="topnavoff" id="ecNav2" onMouseOver="clip_Switch('ecNav','ecBox',2,5); return false;">财经观察</td>     <td class="topnavoff" id="ecNav3" onMouseOver="clip_Switch('ecNav','ecBox',3,5); return false;">独家点评</td>     <td class="topnavoff" id="ecNav4" onMouseOver="clip_Switch('ecNav','ecBox',4,5); return false;">湘股在线</td>     <td class="topnavoff" id="ecNav5" onMouseOver="clip_Switch('ecNav','ecBox',5,5); return false;">财富排行榜</td>   </tr> </table> <table width="100%" border="0" cellspacing="0" cellpadding="0">   <tr>     <td id="ecBox1" style="display:block;"><h1>财经1</h1></td>   </tr>   <tr>     <td id="ecBox2" style="display:none;"><h1>财经2</h1></td>   </tr>   <tr>     <td id="ecBox3" style="display:none;"><h1>财经3</h1></td>   </tr>   <tr>     <td id="ecBox4" style="display:none;"><h1>财经4</h1></td>   </tr>   <tr>     <td id="ecBox5" style="display:none;"><h1>财经5</h1></td>   </tr> </table>     </td>   </tr> </table>  <table width="100%" border="0" cellspacing="0" cellpadding="0" class="iborder">   <tr>     <td> <table width="100%" border="0" cellspacing="0" cellpadding="0">   <tr>     <td class="topnavon" id="bcNav1" onMouseOver="clip_Switch('bcNav','bcBox',1,5); return false;">财经要闻</td>     <td class="topnavoff" id="bcNav2" onMouseOver="clip_Switch('bcNav','bcBox',2,5); return false;">财经观察</td>     <td class="topnavoff" id="bcNav3" onMouseOver="clip_Switch('bcNav','bcBox',3,5); return false;">独家点评</td>     <td class="topnavoff" id="bcNav4" onMouseOver="clip_Switch('bcNav','bcBox',4,5); return false;">湘股在线</td>     <td class="topnavoff" id="bcNav5" onMouseOver="clip_Switch('bcNav','bcBox',5,5); return false;">财富排行榜</td>   </tr> </table> <table width="100%" border="0" cellspacing="0" cellpadding="0">   <tr>     <td id="bcBox1" style="display:block;"><h1>财经1</h1></td>   </tr>   <tr>     <td id="bcBox2" style="display:none;"><h1>财经2</h1></td>   </tr>   <tr>     <td id="bcBox3" style="display:none;"><h1>财经3</h1></td>   </tr>   <tr>     <td id="bcBox4" style="display:none;"><h1>财经4</h1></td>   </tr>   <tr>     <td id="bcBox5" style="display:none;"><h1>财经5</h1></td>   </tr> </table>     </td>   </tr> </table>  <h1 align="center" style="color:#FFCC00; font-size:150px; margin:0px auto;">!</h1> <p style="font-size:12px; text-align:left;"> 改了下,能够实现了,但是第二个为什么会默认第二个项开始,第三个从第三项开始呢?而且只有最后一个自动播放,前面的都死了;并且代码还是不够精练,请高手帮忙继续修改。 </p>

注意:引入外部JavaScript代码后,通常需要刷新页面才能使其生效。


<style type="text/css"> <!-- body{text-align:center;} table{width:500px; margin:0px auto;} td{padding:5px; font-weight:bold; text-align:center;} .iborder{border:1px #333333 solid; margin-top:5px;} .topnavon{background:#FFCC00; cursor:pointer;} .topnavoff{background:#000000; color:#FFFFFF;} --> </style>  <h1 align="center" style="color:#FF0000;">自动滑动+鼠标滑动区域</h1> <table width="100%" border="0" cellspacing="0" cellpadding="0" class="iborder">   <tr>     <td> <table width="100%" border="0" cellspacing="0" cellpadding="0">   <tr>     <td class="topnavon" id="clipNum1" onclick="clip_Switch('clipNum','newsbox',1,3); return false;">热点聚焦</td>     <td class="topnavoff" id="clipNum2" onclick="clip_Switch('clipNum','newsbox',2,3); return false;">图说新闻</td>     <td class="topnavoff" id="clipNum3" onclick="clip_Switch('clipNum','newsbox',3,3); return false;">经济新闻</td>   </tr> </table> <table width="100%" border="0" cellspacing="0" cellpadding="0">   <tr>     <td id="newsbox1" style="display:block;"><h1>新闻1</h1></td>   </tr>   <tr>     <td id="newsbox2" style="display:none;"><h1>新闻2</h1></td>   </tr>   <tr>     <td id="newsbox3" style="display:none;"><h1>新闻3</h1></td>   </tr> </table>     </td>   </tr> </table>  <table width="100%" border="0" cellspacing="0" cellpadding="0" class="iborder">   <tr>     <td> <table width="100%" border="0" cellspacing="0" cellpadding="0">   <tr>     <td class="topnavon" id="ecNav1" onclick="clip_Switch('ecNav','ecBox',1,5); return false;">财经要闻</td>     <td class="topnavoff" id="ecNav2" onclick="clip_Switch('ecNav','ecBox',2,5); return false;">财经观察</td>     <td class="topnavoff" id="ecNav3" onclick="clip_Switch('ecNav','ecBox',3,5); return false;">独家点评</td>     <td class="topnavoff" id="ecNav4" onclick="clip_Switch('ecNav','ecBox',4,5); return false;">湘股在线</td>     <td class="topnavoff" id="ecNav5" onclick="clip_Switch('ecNav','ecBox',5,5); return false;">财富排行榜</td>   </tr> </table> <table width="100%" border="0" cellspacing="0" cellpadding="0">   <tr>     <td id="ecBox1" style="display:block;"><h1>财经1</h1></td>   </tr>   <tr>     <td id="ecBox2" style="display:none;"><h1>财经2</h1></td>   </tr>   <tr>     <td id="ecBox3" style="display:none;"><h1>财经3</h1></td>   </tr>   <tr>     <td id="ecBox4" style="display:none;"><h1>财经4</h1></td>   </tr>   <tr>     <td id="ecBox5" style="display:none;"><h1>财经5</h1></td>   </tr> </table>     </td>   </tr> </table>  <h1 align="center" style="color:#FFCC00; font-size:150px; margin:0px auto;">!</h1> <p style="font-size:12px; text-align:left;"> <h1 align="center" style="color:#FF0000;">改过以后不自动播放了。</h1> </p>

注意:引入外部JavaScript代码后,通常需要刷新页面才能使其生效。

作者最新文章