JavaScript學習筆記5 之 計時器 & scroll、offset、client系列屬性 & 圖片無縫滾動

来源:http://www.cnblogs.com/paulirish/archive/2016/08/21/jishiqi.html
-Advertisement-
Play Games

一、計時器 setInterval ( 函數/名稱 , 毫秒數 )表示每經過一定的毫秒後,執行一次相應的函數(重覆) setTimeout ( 函數/名稱 , 毫秒數 ) 表示經過一定的毫秒後,只執行一次相應的函數(不重覆) 清除計時器: clearInterval( ); clearTimeout ...


一、計時器

setInterval ( 函數/名稱 , 毫秒數 )表示經過一定的毫秒後,執行一次相應的函數(重覆)

setTimeout ( 函數/名稱 , 毫秒數 ) 表示經過一定的毫秒後,只執行一次相應的函數(不重覆)

清除計時器:

clearInterval( );

clearTimeout( );

當計時器調用執行完畢時,它將返回一個timer ID

如果將該ID傳遞給clearInterval,便可以終止代碼的執行。

實例:

頁面佈局:

<div id="wrap">
    <h2>計時開始</h2>
        <p id="show"></p>
        <button id="btn1">clearInterval( )</button>
        <button id="btn2">clearTimeout( )</button>
</div>

JS代碼:

 1 var show=document.getElementById('show');
 2     var btn1=document.getElementById('btn1');
 3     var btn2=document.getElementById('btn2');
 4     var x=0;
 5     var timer1=null;//設置timer1為空對象類型
 6     var timer2=null;
 7 //1.setInterval ( 函數/名稱 , 毫秒數 )表示每經過一定的毫秒後,執行一次相應的函數(重覆)
 8     timer1=setInterval(function(){//當計時器調用執行完畢時,它將返回一個timerID(timer1),
 9         x++;
10         show.innerHTML=x;
11     },500);
12     btn1.onclick=function(){
13         clearInterval(timer1);//將該ID傳遞給clearInterval,便可以終止代碼的執行
14         // 清除計時器:clearInterval( );   
15     }
16 //2.setTimeout ( 函數/名稱 , 毫秒數 )表示經過一定的毫秒後,只執行一次相應的函數(不重覆)
17     timer2=setTimeout(function(){
18         alert('我是一次性計時器');
19     },3000)
20     btn2.onclick=function(){
21         clearTimeout(timer2);//清除計時器 clearTimeout( );
22     }

 

二、scroll系列屬性

 

scrollLeft:設置或獲取當前左滾的距離,即左捲的距離;
scrollTop:設置或獲取當前上滾的距離,即上捲的距離;
scrollHeight:獲取對象可滾動的總高度;
scrollWidth:獲取對象可滾動的總寬度;

使用實例:

頁面佈局:

<div id="box">
    <div id="box1">幾點見覅當時就發哦哦降低副書記艾佛積分抵沙發幾點見覅當時就發哦哦降低副書記艾佛積。。。。。。</div>
</div>
<button id="btn">獲取</button>
<p id="totop">返回頂部</p>

JS代碼:

    var box=document.getElementById('box');
    var box1=document.getElementById('box1');
    var btn=document.getElementById('btn');
    var show=document.getElementById('show');
    var totop=document.getElementById('totop');
    btn.onclick=function(){
        console.log(box.scrsollLeft);//獲取父級(box)左滾的距離,即左捲的距離;
        console.log(box.scrollTop);//獲取當前父級(box)上滾的距離,即上捲的距離
        console.log(box.scrollWidth);//獲取對象(box1)可滾動的總寬度
        console.log(box.scrollHeight);//獲取對象(box1)可滾動的總高度
    }

document.body 訪問到<body>元素,頁面沒有DTD,或者說沒有指定doctype時,
document.documentElement 訪問到<html>根元素,頁面有DTD,或者說指定了doctype時,

獲取scrollTop的相容寫法
var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;

示例:

 1 totop.onclick=function(){
 2         var timer1=null;
 3         var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
 4         //document.documentElement訪問到<html>根元素(頁面沒有DTD,或者說沒有指定doctype時)
 5         //window.pageYOffset (safari自己的方法)
 6         //document.body   訪問到<body>元素,適用(頁面沒有DTD,或者說沒有指定doctype時)
 7         timer1=setInterval(function(){
 8              scrollTop-=20;
 9              if(scrollTop<=0){
10                  /*scrollTop=0;
11                  return false;*/
12                  clearInterval(time);
13              }
14              document.documentElement.scrollTop=scrollTop;
15              document.body.scrollTop=scrollTop;
16               window.pageYOffset=scrollTop;
17         },2)
18     }

 

三、offset系列屬性

 

offsetLeft:獲取對象左側與定位父級之間的距離
offsetTop:獲取對象上側與定位父級之間的距離
PS:獲取對象到父級的距離取決於最近的定位父級
offsetWidth:獲取元素自身的寬度(包含邊框
offsetHeight:獲取元素自身的高度(包含邊框

 

四、client系列屬性

 

clientLeft、clientTop:獲取元素內容到邊框的距離,效果和邊框寬度相同,比較少使用
clientWidth:獲取元素自身的寬度(不含邊框
clientHeight:獲取元素自身的高度(不含邊框

 

五、圖片無縫滾動

頁面佈局:

 

 1 <div id="wrap">
 2     <div id="con">
 3         <div id="box1">
 4             <img src="images/qzl1.jpg" alt="">
 5             <img src="images/qzl2.jpg" alt="">
 6             <img src="images/qzl3.jpg" alt="">
 7             <img src="images/qzl4.jpg" alt="">
 8             <img src="images/qzl5.jpg" alt="">
 9         </div>
10         <div id="box2">
11         </div>
12     </div>
13 </div>
14 <script>
15 var wrap=document.getElementById('wrap');
16 var box1=document.getElementById('box1');
17 var box2=document.getElementById('box2');
18 // var img1=wrap.getElementsByTagName('img')[0];
19 var timer=null,x=0;
20 var maxWidth=box1.offsetWidth;
21 box2.innerHTML=box1.innerHTML;
22 function move(){
23     timer=setInterval(function(){
24         x+=5;
25         if(x>=maxWidth){//臨界點,一組圖片轉完時
26             wrap.scrollLeft=0;
27             //設這組圖片的左捲距離為0,回到初始位置
28             x=0;
29         }
30         wrap.scrollLeft=x;
31     },20)
32 }
33 move();//進入頁面自動執行
34 wrap.onmouseenter=function(){
35     clearInterval(timer);
36 }
37 wrap.onmouseleave=function(){
38     move();
39 }
40 </script>

 

 

 

 

 

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • scjson純c json引擎, 補充了可以在json串或文件中添加註釋的功能. window和linux測試完畢. ...
  • Python中的變數不需要聲明,每個變數使用前必須賦值,變數賦值後才會被創建,在Python中變數就是變數,它沒有類型。我們所說的"類型"是變數所指的記憶體中對象的類型。 等號(=)用來給變數賦值,等號(=)運算符左邊是變數名,等號(=)運算符右邊是存儲在變數名中的值。例如: 執行以上程式會輸出以下結 ...
  • 好不容易寫出來一些程式,最後各種錯誤,就是運行不了。最後還得乖乖的 打斷點 ,運用 輸出語句,找出問題具體在什麼地方,進行修改。 1、從本地找cookie。IE-工具-Internet選項-瀏覽歷史紀錄-設置-查看文件。和從C盤找結果是一樣的。 2、簡單設置編碼。 Myeclipse-Windows ...
  • 1.前言 前面講了一些關於python的一些基本的語法及語句,在這個地方繼續講python的方法及其python核心概念的面向對象。我們都知道python被稱為面向對象的語言,那麼在這裡我們將正式的接觸 的python的核心。 2.函數 定義:是可調用的,執行某種行為並返回一個值。判斷一個函數是否可 ...
  • 緩存集群管理 系統化管理資源、節點,統一緩存版本,開發人員無需關心底層基礎設施,簡化 運維複雜度,提供統一的系統化運維監控管理。 自動化運維部署平臺 應用監控 開源項目 總結 用自動代替人工; 用小系統驅動打團隊; 用基礎平臺支撐上層應用。 --------... ...
  • fsbanner是一款自定義功能豐富的響應式網站Banner手風琴特效jQuery插件。該手風琴特效相容性很好,支持點擊和滑鼠滑過等觸發事件,並且可添加標題或描述。 線上實例 使用方法 複製 複製 參數詳解 下載 ...
  • 工程下安裝XTemplate並使用它的方法實例說明: 1.安裝xtpl npm install xtpl xtemplate --save 2.在views目錄添加test.xtpl文件,其內容為 this is {{title}}! 4.集成到Express中,只需要在app.js中,設置模板引擎 ...
  • 第一次寫博,還蠻激動。。。 看到了三題經典題型,經老師講解後,對此類題目有了更深刻的認識 就我目前的認識對此題進行總結。如有錯誤,敬請指正 首先,我們先明確一下JS引擎的工作步驟: js引擎工作分為兩步: 1.將這個js中的變數和函數聲明保存到當前(註意,是當前)執行環境的變數對象中 2.再逐行解析 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...