まず、前のモーション コードを見て、マルチオブジェクト モーションがサポートされているかどうか、またどのような問題が発生する可能性があるかを見てみましょう。 コードをコピーします コードは次のとおりです: <br> div {<br> 幅: 100px;<br> 高さ: 50px;<br> 背景: 赤;<br> マージン: 10px;<br> }<br> <br> </div> <p></p> <div class="codetitle"><span><a style="CURSOR: pointer" data="48754" class="copybut" id="copybut48754" onclick="doCopy('code48754')">コードをコピーします<u></u></a> コードは次のとおりです:</span></div> <div class="codebody" id="code48754"> <br> </body><br> <br><br> <br>次は Javascript コードです: <br> </div> <p></p> <p>コードをコピー</p> <div class="codetitle"><span><a style="CURSOR: pointer" data="26727" class="copybut" id="copybut26727" onclick="doCopy('code26727')"> コードは次のとおりです:<u><div class="codebody" id="code26727"> <br> <スクリプトタイプ="text/javascript"><br> window.onload = function() {<br> var aDiv = document.getElementsByTagName('div');<br> for (var i = 0; i <adiv.length i></adiv.length> aDiv[i].onmouseover = function() {<br> startMove(this, 400);<br> };<br> aDiv[i].onmouseout = function() {<br> startMove(this, 100);<br> };<br> }<br> }<br> var timer = null;<br> function startMove(obj, iTarget) {<br> clearInterval(タイマー);<br> タイマー = setInterval(function() {<br> var 速度 = (iTarget - obj.offsetWidth) / 6;<br> 速度 = 速度 > 0 ? Math.ceil(速度) : Math.floor(速度);<br> if (obj.offsetWidth == iTarget) {<br> clearInterval(タイマー);<br> } else {<br> obj.style.width = obj.offsetWidth 速度 'px';<br> }<br> }, 30);<br> }<br> </script><br> </div> </u><p> この時点では、マウスが最初の div に移動しているときは正常に動作していますが、再び 2 番目または 3 番目の div に移動するとバグが発生する可能性があります。 </p> 画像 これが原因ですか? 図を参照してください。実際には何も行われません。<p> </p> プログラム全体が 1 つのタイマーです。たとえば、最初の div が開始され、前のタイマーに移動した 2 番目の div のマウス マークが保留され、自然にそこに置かれます。 <p> したがって、最大の問題は、プログラム全体にタイマーが 1 つしかないことです。この問題は解決できますか? </p> <p></p>解法案:<p><strong> </strong>さらに単純に、タイマーを 1 つの物体の属性として扱うと、各物体に 1 つのタイマーがあり、現在オフになっているタイマーは、オフになっている物体上のタイマーであり、開始も物体上のタイマーです。 </p> <p> その間は完全に相互干渉せずに実行できます。 </p>以下の変更後の Javascript 代コードを参照してください:<p> </p> <p></p> <p></p> <div class="codetitle">复制代码<span><a style="CURSOR: pointer" data="66248" class="copybut" id="copybut66248" onclick="doCopy('code66248')"><u>代码如下:</u><div class="codebody" id="code66248"> <br> <スクリプトタイプ="text/javascript"><br> window.onload = function() {<br> var aDiv = document.getElementsByTagName('div');<br> for (var i = 0; i <adiv.length i></adiv.length> aDiv[i].timer=null // タイマーをオブジェクトの属性として保存します <br> aDiv[i].onmouseover = function() {<br> StartMove(this, 400);<br> };<br> aDiv[i].onmouseout = function() {<br> StartMove(this, 100);<br> };<br> }<br> }<br> function startMove(obj, iTarget) {<br> クリア間隔 (obj.timer); obj.timer = setInterval(function() {<br> var 速度 = (iTarget - obj.offsetWidth) / 6;<br> 速度 = 速度 > 0 ? Math.ceil(speed) : Math.floor(speed);<br> If (obj.offsetWidth == iTarget) {<br> } else {<br> obj.style.width = obj.offsetwidth速度 'px'; <br>以来 }<br> }, 30);<br> }<br> <br><br> <br>このようにして、プログラムは問題なく、複数のオブジェクトの移動をサポートできます。 </div></a></span> </div></a></span></div>