javascript - Mengapa saya perlu menyesuaikan sifat sebelum penangguhan fungsi gerakan ini?
为情所困
为情所困 2017-05-19 10:18:30
0
1
444

Fungsi ini digunakan untuk mencipta kesan animasi:

function moveElement(elementId,final_x,final_y,interval){
//            名称            id       x轴位置    y轴位置   速度
    var elem=document.getElementById(elementId);
    var x_pos=parseInt(elem.style.left);
    var y_pos=parseInt(elem.style.top);
    if(elem.movement){
        clearTimeout(elem.movement);
    }            //若elem已存在一个movement属性,先结束它
    if(y_pos==final_y&&x_pos==final_x){
        return true;
    }
    if(y_pos<final_y){
        dist=Math.ceil((final_y-y_pos)/30);//每运动一次的数值
        y_pos=y_pos+dist;
    }
    if(y_pos>final_y){
        dist=Math.ceil((y_pos-final_y)/30);
        y_pos=y_pos-dist;
    }
    if(x_pos<final_x){
        dist=Math.ceil((final_x-x_pos)/30);
        x_pos=x_pos+dist;
    }
    if(x_pos>final_x){
        dist=Math.ceil((x_pos-final_x)/30);
        x_pos=x_pos-dist;
    }
    elem.style.top=y_pos+"px";
    elem.style.left=x_pos+"px";
    repeat="moveElement('"+elementId+"',"+final_x+","+final_y+","+interval+")"
    elem.movement=setTimeout(repeat,interval)
//  自定义的属性movement,它属于elem
}

Mengenai ayat terakhir elem.movement=setTimeout(repeat,interval)
dan ayat di atas if(elem.movement){

    clearTimeout(elem.movement);
}

Saya tahu bahawa fungsi mereka adalah untuk menamatkan fungsi yang dijalankan kali terakhir apabila ia dijalankan semula, tetapi mengapa ia melaporkan ralat apabila terus menulis movement=setTimeout(repeat,interval), manakala menulis elem.movement sudah memadai?

为情所困
为情所困

membalas semua(1)
阿神

pergerakan dan elem mempunyai korespondensi satu sama satu.

Jika anda menulisnya seperti cara anda menulisnya, pergerakan menjadi pembolehubah global.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan