javascript元素水平運動程式碼例項

admin發表於2017-04-05

本章節通過程式碼例項介紹一下如何利用原生javascript實現元素的水平運動效果。

程式碼如下:

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style>
body{
  margin:0; 
  padding:0;
}
#run{
  width:100px; 
  height:100px; 
  background:#06c;
  position:absolute; 
  border:1px solid #000;
  left:0;
}
</style>
<script>
window.onload = function(){
  var run = document.getElementById("run");
  var btn = document.getElementById("btn");
  var btn1 = document.getElementById("btn1");
  var speed = 2;
  var timer = null;
  btn.onclick = function(){
    startrun(300);
  }
  btn1.onclick = function(){
    startrun(0);
  }
  function startrun(target){
    clearInterval(timer);
    timer = setInterval(function(){
      if(run.offsetLeft <target){
        speed = 2;
      }
      else{
        speed = -2;
      }
      if(run.offsetLeft ==target){
        clearInterval(timer);
      }
      else{
        run.style.left = run.offsetLeft +speed +"px";
      }
    },30)
  }
}
</script>
</head>
<body>
<input id="btn" type="button" value="運動向右">
<input id="btn1" type="button" value="運動向左">
<div id="run"></div>
</body>
</html>

上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。

一.程式碼註釋:

(1).window.onload = function(){},文件元素完全載入完畢再去執行函式中的程式碼。

(2).var run = document.getElementById("run"),獲取id屬性值為run的元素物件。

(3).var btn = document.getElementById("btn"),獲取id屬性值為btn的元素物件。

(4).var btn1 = document.getElementById("btn1"),獲取id屬性值為btn1的元素物件。(5).var speed = 2,設定運動幅度。

(6).var timer = null,宣告一個變數並賦初值為null,用來儲存定時器函式的標識。

(7). btn.onclick = function(){

  startrun(300);

},點選按鈕可以使元素向右運動。

(8).btn1.onclick = function(){

  startrun(0);

},點選按鈕可以使元素向左運動。

(9).function startrun(target){},此方法實現了運動效果,引數規定運動的目標座標值。

(10).clearInterval(timer),停止上一個定時器函式的執行,否則可能會出現多個定時器函式重合執行的情況。

(11).timer = setInterval(function(){

  if(run.offsetLeft <target){

    speed = 2;

  }

  else{

    speed = -2;

  }

  if(run.offsetLeft ==target){

    clearInterval(timer);

  }

  else{

    run.style.left = run.offsetLeft +speed +"px";

  }

},30),首先判斷運算運動的方位,設定speed的值。

如果到達指定位置,就停止定時器函式的執行,否則設定offset屬性值。

二.相關閱讀:

(1).clearInterval()可以參閱window.clearInterval()一章節。

(2).setInterval()方法可以參閱setInterval()一章節。

(3).offsetLeft()方法可以參閱js offsetLeft一章節。

相關文章