中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript如何實現數值的動態變化

發布時間:2022-11-17 16:59:46 來源:億速云 閱讀:187 作者:iii 欄目:web開發

這篇“JavaScript如何實現數值的動態變化”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“JavaScript如何實現數值的動態變化”文章吧。

效果如下:

JavaScript如何實現數值的動態變化

話不多說,直接上代碼:

HTML文件:

  <div class="outer">
    <div class="counter-container">
      <i class="iconfont icon-Basket-Ball" style="font-size:50px"></i>
      <div class="counter" data-set="37062"></div>
      <span>常規賽總得分</span>
    </div>

    <div class="counter-container">
      <i class="iconfont icon-BasketballHoop" style="font-size:50px"></i>
      <div class="counter" data-set="10210"></div>
      <span>常規賽總籃板</span>
    </div>

    <div class="counter-container">
      <i class="iconfont icon-assistant" style="font-size:50px"></i>
      <div class="counter" data-set="10045"></div>
      <span>常規賽總助攻</span>
    </div>
  </div>

代碼解析:

在這里寫了一個大容器包含了三個小容器,每個小容器中的數據展示使用data-*屬性
(注:data-*用于存儲頁面或應用程序的私有自定義數據,賦予我們在所有 HTML 元素上嵌入自定義 data 屬性的能力,存儲的(自定義)數據能夠被頁面的 JavaScript 中利用,以創建更好的用戶體驗(不進行 Ajax 調用或服務器端數據庫查詢))
我們這里就把我們自定義的數據(370621021010045)傳入,以便在js中使用.

css文件:

* {
    box-sizing: border-box;
  }
  
 .outer {
    background-color: #8e44ad;
    color: #fff;
    font-family: 'Roboto Mono', sans-serif;
    display: flex;
    align-items: center;
    justify-content: center;
    height: 350px;
    overflow: hidden;
    margin: 0;
  }
  
  .counter-container {
    display: flex;
    flex-direction: column;
    justify-content: center;
    text-align: center;
    margin: 30px 50px;
  }
  
  .counter {
    font-size: 60px;
    margin-top: 10px;
  }
  
  @media (max-width: 580px) {
    .outer {
      flex-direction: column;
    }
  }

代碼解析:

css文件很簡單啦,就使用了flex布局,最后小加了一個媒體查詢來適應屏幕尺寸變化,大家自行看吧。

js文件:

let counters = document.querySelectorAll('.counter')  //獲取到三個counter盒子counters.forEach(item => {
    item.innerText = '0'  //記錄分數變化的變量,初始值為0

    const updateData = () => {
        const data = +item.getAttribute('data-set')  //獲取到元素中綁定的數據
        const tmp = +item.innerText //臨時變量保存變化一次的數據量
    
        const changeData = data / 200  //設置改變的速率

        if(tmp < data) {  //如果臨時變量的值小于最終數據的值,那么就給元素進行數據相加
            item.innerText = `${Math.ceil(tmp + changeData)}`  //值數相加,然后進行取整
            setTimeout(updateData,1)  //定時器傳入回調函數目的在于動態變化
        } else {
            item.innerText = data  //不滿足條件后,證明得到了最終數據,直接渲染
        }

    }
    updateData()  //調用函數,啟動函數})

代碼解析:

數據的動態改變邏輯在這里咯!

  • 首先就要獲取到儲存數據的三個div,然后通過foreach方法遍歷我們獲取的三個盒子,初始的分數是為0的,因此我們把盒子的innerText設置為了0(注意:這里的0是一個字符串)

  • 隨后定義一個更新數據的方法updateData,隨后獲取到我們之前自定義的數據,在這里有部分朋友看到+item.getAttribute(data-set)估計都懵逼了,為啥+符號在前面呢?+代表后面的數字為正數,相當于告訴編譯器,即將賦值的數值類型為數字類型,不要把數字當作字符串去拼接

  • 然后定義一個臨時變量tmp,目的在于保存item.innerText中變化后的數值,接下來設置數據變化的速率在這里是除以了200,除以的數據約大,那么變化的速率越慢,反之則快

  • 隨后去做一個判斷(讓臨時量與總量做對比),如果臨時量小于總量,就讓臨時量tmp數據變化量changeData相加,做一個取整,如果不滿足判斷條件,直接渲染數據即可(這時的數據已經是最終的數據了,也就是我們的自定義數據)

  • 實現數據的動態變化,最核心的還是定時器,在滿足判斷條件的作用域中啟動定時器,傳入回調函數updateData,實現1ms調用一次,數據變化看著很絲滑.

以上就是關于“JavaScript如何實現數值的動態變化”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平塘县| 城固县| 闵行区| 新兴县| 泾阳县| 沂源县| 绥芬河市| 静宁县| 金堂县| 台北市| 蓬溪县| 通州区| 西和县| 来凤县| 沅江市| 弥勒县| 原平市| 梁平县| 湟源县| 甘孜| 和田县| 尖扎县| 永仁县| 红原县| 金昌市| 陕西省| 五台县| 广宁县| 金寨县| 焉耆| 年辖:市辖区| 绵竹市| 杭州市| 天峨县| 大港区| 阆中市| 湘西| 利津县| 滕州市| 永仁县| 顺平县|