亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaScript 定時器和 sessionStorage

JavaScript 定時器和 sessionStorage

慕容3067478 2023-09-21 16:27:42
我有以下問題。我有一個計時器函數,它需要一個參數,即秒數。直接通過的話,就可以正常工作,沒有任何缺陷。但是,出于多種原因,我需要使用 sessionStorage,并且當我在將變量傳遞給計時器函數之前從 sessionStorage 檢索變量時,它會乘以參數中傳遞的秒數的 10 倍。我不明白為什么它有這種行為。我寫了一個最小的例子來說明我的問題:function countdown(time_p) {  var saved_countdown = sessionStorage.getItem('saved_countdown');  var time;  if (saved_countdown == null) {    // Set the time we're counting down to using the time allowed    var new_countdown = new Date().getTime() + (time_p + 2) * 1000;    time = new_countdown;    sessionStorage.setItem('saved_countdown', new_countdown);  } else {    time = saved_countdown;  }  // Update the count down every 1 second  var x = setInterval(() => {    // Get today's date and time    var now = new Date().getTime();    // Find the distance between now and the allowed time    var distance = time - now;    // Time counter    var counter = Math.floor(distance / 1000);    // Output the result in an element with id="demo"    document.getElementById("demo").innerHTML = counter + " s";    // If the count down is over, write some text     if (counter <= 0) {      clearInterval(x);      sessionStorage.removeItem('saved_countdown');      sessionStorage.removeItem('max_time');      document.getElementById("demo").innerHTML = "EXPIRED";    }  }, 1000);}$("#confirm_settings").click(function() {  var time = $("#time").val();  console.log("time entered" + time);  sessionStorage.setItem('max_time', time);  time = sessionStorage.getItem('max_time'); // multiply the time entered by 10 ...  // time = 42; // works well  console.log("time = " + time);  countdown(time);});<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script><p id="demo"> </p><label for "time"> Time limit :</label><input type="text" id="time" placeholder="enter a duration (s)"> <br><button type="button" id="confirm_settings">OK</button>
查看完整描述

1 回答

?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

窗口存儲保存字符串。您需要將它們轉換為整數:


function countdown(time_p) {

  var time = sessionStorage.getItem('saved_countdown');


  if (time) {

    time = +time; // cast the string to number

  }

  else {

    // Set the time we're counting down to using the time allowed

    var new_countdown = new Date().getTime() + (time_p + 2) * 1000;

    time = new_countdown;

    sessionStorage.setItem('saved_countdown', new_countdown);

  } 


查看完整回答
反對 回復 2023-09-21
  • 1 回答
  • 0 關注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號