0

それが私が説明できる最良の方法です。基本的に、私は画面onLoadを横切ってスクロールしているjpgを持っています。画像を停止し、画面を 3 回下降した後、画像を非表示にできるはずです。私は数時間それを行ってきましたが、onClick ボタンを使用せずに機能させる方法がわかりません。私はそれを自然に止める必要があります。スクリプトは次のとおりです。

    function moveit()
    {
    dom=document.getElementById("roman").style;


    dom.top= parseInt(dom.top)+tinc+"px"; 
    dom.left= startleft+"px";


    dom.visibility= "visible";
    startleft=startleft+linc;

    if (startleft<= 20)     
    {linc=linc*-1;      
    window.document.roman.src="roman.jpg"; }

    if (startleft>= window.screen.width-10) 
    {linc=linc*-1;
    window.document.roman.src="roman.jpg"; }


    to=setTimeout("moveit();", 100) ;
    }

そして、本体は次のようになります。

    <body onload="moveit()">
    <div id="roman" style="position:absolute; top: 0px; left: 0px; visibility: hidden;">
    <img name="roman" src="roman.jpg"/>
    </div>

    <form>
    <div id="button" style="position:absolute; top: 315px; left: 10px;">
    <input type="button" value="stop" onClick="clearTimeout(to)">
    </div>
    </form>

いくつかの方法を試しましたが、ボタンの側面を削除できませんでした。画像が右から左に 3 回完全にパスし、停止して非表示になるようにしたいと思います。ボタンなしでそれを行う方法について何か考えはありますか?

4

1 に答える 1

0

カウンター変数を使用して、画像が水平方向に跳ね返る回数を追跡したいと考えています。そのカウンターが特定の数に達したら、タイムアウトをリセットしないでください。

var passes = 0;

var imageStyle = document.getElementById("roman").style;
imageStyle.visibility = "visible"; 

// Referring to the image with document.roman isn't recommended; give it an ID
// and use getElementById instead.
window.document.roman.src = "roman.jpg";

function moveit() {
    imageStyle.top = parseInt(dom.top) + tinc + "px"; 
    imageStyle.left = startleft + "px";

    startleft = startleft + linc;

    if (startleft <= 20 || startleft >= window.screen.width - 10) {
        linc = linc * -1;
        passes++;
    }

    if (passes < 3) {
        to = setTimeout(moveit, 100);
    }
}

冗長なコードをいくつか削除したことに注意してください。タイマーが起動するたびに可視性や画像ソースを設定する必要はありません。最初だけやってください。

于 2013-05-24T23:14:00.690 に答える