鍍金池/ 問答/HTML/ 怎么實(shí)現(xiàn)一個(gè)頁面有多個(gè)倒計(jì)時(shí)同時(shí)進(jìn)行

怎么實(shí)現(xiàn)一個(gè)頁面有多個(gè)倒計(jì)時(shí)同時(shí)進(jìn)行

后臺(tái)返回時(shí)間,一個(gè)頁面中有多個(gè)表格每個(gè)表格中有一行用來顯示后臺(tái)給的時(shí)間,比如說后臺(tái)給一號(hào)表格10分鐘的倒計(jì)時(shí)時(shí)間,給2號(hào)表格15分鐘的倒計(jì)時(shí)時(shí)間,那我要怎么做才能使得這兩個(gè)倒計(jì)時(shí)都能進(jìn)行??我自己模擬了一個(gè)靜態(tài)的假的倒計(jì)時(shí),但是一直沒辦法讓兩個(gè)時(shí)間都能倒計(jì)時(shí)。
模擬頁面:
clipboard.png
(ps:這里的10分50秒我后面有轉(zhuǎn)化成00:00的格式,這兩個(gè)數(shù)據(jù)都是假的,在html里填充進(jìn)去的)

html代碼:

<div style="width:300px;height:200px;background:lightgrey;" class="totalDiv">
        <button style="color:black;background-color:aquamarine;">倒計(jì)時(shí)</button>
        <div style='color:red;font-size:16px;margin-top:40px;margin-left:20px'>離預(yù)約失效的時(shí)間:
            <br>
            <b>
                <span class='time' id="0">10分50秒,</span>
            </b>
        </div>
        <div style='color:red;font-size:16px;margin-top:40px;margin-left:20px'>離預(yù)約失效的時(shí)間:
            <br>
            <b>
                <span class='time' id="1">3分58秒,</span>
            </b>
        </div>
    </div>

js代碼:

var remainTime = $("body").find(".time").text();
        var clock = remainTime.split(",");
        var countDownTimes = [];
        clock.pop();
        for (var i = 0; i < clock.length; i++) { //獲取總時(shí)間
            var second = clock[i].slice(-4, -1); //秒數(shù)
            var minu = clock[i].slice(0, 2); //分鐘數(shù)
            /* 以下的if都是為了將X分x秒轉(zhuǎn)換成00:00格式 */
            if (second.substr(0, 1) === '分') {
                second = second.slice(1, 3);
            }
            if (second.substr(1, 1) == '分') {
                second = second.slice(2, 3);
            }
            if (second < 0) {
                second = 60 + parseInt(second);
                second = second.toString();
                minu = parseInt(minu);
                minu = minu - 1;
                minu = minu.toString();
            }
            if (minu.substr(minu.length - 1, 1) == '分') {
                minu = minu.slice(0, 1);
            }
            if (minu.length == 1 || minu.length == 0) {
                minu = "0" + minu;
            }
            if (second.length == 1) {
                second = "0" + second;
            }
            time = minu + ":" + second;
            countDownTimes[i] = parseInt(minu * 60 + second * 1); //開始:轉(zhuǎn)換成總秒數(shù)    
            /* cutTime(countDownTime); */
        }
       
        for (var j = 0; j < countDownTimes.length; j++) {
            var countDownTime = countDownTimes[j];
            cutTime(countDownTime);
        }

        function cutTime(countDownTime) {
            var timer = setInterval(function () {
                if (countDownTime >= 0) {
                    showTime(countDownTime);
                    countDownTime--;
                } else {
                    clearInterval(timer);
                    alert("計(jì)時(shí)結(jié)束,給出提示");
                }
            }, 1000);
        }

        function showTime(countDownTime) {
            var minute = Math.floor(countDownTime / 60);
            var seconds = countDownTime - 60 * minute;
            minute = minute.toString();
            seconds = seconds.toString();
            if (minute.length == 1) {
                minute = "0" + minute;
            }
            if (seconds.length == 1) {
                seconds = "0" + seconds;
            }
            time = minute + ":" + seconds;
            /* 顯示時(shí)間 */
            console.log(time);
            $("span#2").text(time);
        }
        
     

非常不理解的是我如果把time這個(gè)東西填充進(jìn)上面隨便一個(gè)b標(biāo)簽里,都只能顯示一個(gè)時(shí)間就是后面這個(gè)div的時(shí)間,但是如果我是在控制臺(tái)里打印time,就會(huì)顯示兩個(gè)時(shí)間,因?yàn)槲矣袃蓚€(gè)div時(shí)間。這是為什么呢?如圖

clipboard.png

回答
編輯回答
若相惜

j的那個(gè)循環(huán)循環(huán)了兩次,showTime()執(zhí)行了兩次,console了兩次,text()執(zhí)行了兩次,后面那次覆蓋掉了前面的那次,所以你只能看到后面的那個(gè)倒計(jì)時(shí);

2017年4月5日 02:06
編輯回答
紓惘

錯(cuò)誤的代碼貼下?運(yùn)行了你的代碼,倒計(jì)時(shí)兩個(gè)都不走

2018年4月21日 07:43
編輯回答
命多硬

問題太長,我懶得分析.就標(biāo)題答個(gè)實(shí)現(xiàn)方式吧.

<span class='time' data-time='360'></span>
<span class='time' data-time='120'></span>
//jq中
//遍歷each $('.time');
//獲取截止時(shí)間或者時(shí)差 data('time')
//接下來就會(huì)了吧?
2017年1月26日 05:51
編輯回答
礙你眼
$("span#2").text(time);

你只給一個(gè)元素賦值,第二個(gè)覆蓋了第一個(gè)

var remainTime = $("body").find(".time").text();
var clock = remainTime.split(",");
var countDownTimes = [];
clock.pop();
for (var i = 0; i < clock.length; i++) { //獲取總時(shí)間
    var second = clock[i].slice(-4, -1); //秒數(shù)
    var minu = clock[i].slice(0, 2); //分鐘數(shù)
    /* 以下的if都是為了將X分x秒轉(zhuǎn)換成00:00格式 */
    if (second.substr(0, 1) === '分') {
        second = second.slice(1, 3);
    }
    if (second.substr(1, 1) == '分') {
        second = second.slice(2, 3);
    }
    if (second < 0) {
        second = 60 + parseInt(second);
        second = second.toString();
        minu = parseInt(minu);
        minu = minu - 1;
        minu = minu.toString();
    }
    if (minu.substr(minu.length - 1, 1) == '分') {
        minu = minu.slice(0, 1);
    }
    if (minu.length == 1 || minu.length == 0) {
        minu = "0" + minu;
    }
    if (second.length == 1) {
        second = "0" + second;
    }
    time = minu + ":" + second;
    countDownTimes[i] = parseInt(minu * 60 + second * 1); //開始:轉(zhuǎn)換成總秒數(shù)    
    /* cutTime(countDownTime); */
}
   
for (var j = 0; j < countDownTimes.length; j++) {
    var countDownTime = countDownTimes[j];
    cutTime(countDownTime,j);
}

function cutTime(countDownTime,j) {
    var timer = setInterval(function () {
        if (countDownTime >= 0) {
            showTime(countDownTime,j);
            countDownTime--;
        } else {
            clearInterval(timer);
            alert("計(jì)時(shí)結(jié)束,給出提示");
        }
    }, 1000);
}

function showTime(countDownTime,j) {
    var minute = Math.floor(countDownTime / 60);
    var seconds = countDownTime - 60 * minute;
    minute = minute.toString();
    seconds = seconds.toString();
    if (minute.length == 1) {
        minute = "0" + minute;
    }
    if (seconds.length == 1) {
        seconds = "0" + seconds;
    }
    time = minute + ":" + seconds;
    /* 顯示時(shí)間 */
    console.log(time,j);
    $("span#"+j).text(time);
}
2017年10月24日 14:44