1

私が達成しようとしていること:

ボタンがあります。このボタンをクリックすると、setInterval を設定して別の関数を 1 秒に 1 回実行する関数が起動されます。この関数は、分割線を 100 ピクセル左に移動する必要があります。

実際に起こっていること:

ディバイダは左に 100 ピクセル移動しますが、その後停止し、setInterval 関数の後続の起動では移動しません。

初期関数を起動する画像:

<img id="playerimg" src="../../Downloads/1375889362_toggle-right_red.png" alt=""
width="42" height="42" border="0" onclick="vidgalshow()"/>

Interval を初期化して起動するこの関数内のステートメント:

closemaindiv = setInterval("collapser()", 1000);

そして最後に、アニメーションを実行する必要があるコラッパ関数自体:

document.getElementById("maindiv").style.position = "absolute";
document.getElementById("maindiv").style.left = (document.getElementById("maindiv").style.left - 100);

毎秒 alert() を実行しているため、Interval が毎秒発生していることがわかります。(しかし、ボックスは一度左に移動し、その後は移動しません(!))。

ここで何が起こっているかについてのアイデアはありますか?

4

1 に答える 1

3

減算する前に、現在の値を数値として解析する必要があると思います。

var currentLeft = parseInt(document.getElementById("maindiv").style.left, 10);
document.getElementById("maindiv").style.left = (currentLeft - 100) + "px";

また、文字列の代わりに関数参照を setInterval に渡すことをお勧めします。

closemaindiv = setInterval(collapser, 1000);
于 2013-08-07T14:09:52.363 に答える