如何在Javascript/Jquery中完全更新输入表单的先前值?

6ss1mwsb  于 2023-01-30  发布在  jQuery
关注(0)|答案(1)|浏览(113)
$(document).on("click", ".searchbutton", function(e){
          var city = $("#searchbar").val()
          event.preventDefault();
          setInterval(function(){
                    var hdate = new Date()
                    var offset = 0 - hdate.getTimezoneOffset()/60
                    var hmin = hdate.getMinutes()
                    var hsec = hdate.getSeconds()
                    var diff = Math.round(Long/15) - offset
                    if((hdate.getHours() + diff) > 23){
                      disphour = (hdate.getHours() + diff) - 24
                      var formattedNumberh = ("0" + disphour).slice(-2)
                      $("#hour").text(formattedNumberh)
                    }
                    else if((hdate.getHours() + diff) < 0){
                      disphour = 24 + (hdate.getHours() + diff)
                      var formattedNumberh = ("0" + disphour).slice(-2)
                      $("#hour").text(formattedNumberh)
                    }
                    else{
                      disphour = hdate.getHours() + diff
                      var formattedNumberh = ("0" + disphour).slice(-2)
                      $("#hour").text(formattedNumberh)
                    }
                    var formattedNumberm = ("0" + hmin).slice(-2)
                    var formattedNumbers = ("0" + hsec).slice(-2)
                    $("#minute").text(formattedNumberm)                                    
                    $("#second").text(formattedNumbers)                                          
                }, 1000)   
})

当城市名称输入到输入字段中并按下按钮时,执行此功能;它显示那个城市的时间。
当我刷新页面后在输入栏中输入一个城市时,效果很好。然而,当我紧接着输入另一个城市时,显示的小时在前一个城市的小时和新城市的小时之间波动。
我不知道是什么问题。

qni6mghb

qni6mghb1#

你永远不会清除间隔。所以每次“搜索”都会创建一个新的间隔,并且每个间隔都会继续运行并做它被告知要做的事情。
例如,您可以跟踪变量中的“当前间隔”,并在创建新间隔之前使用该变量清除该间隔:

// track the interval
var currentInterval = -1;

$(document).on("click", ".searchbutton", function(e){
  // clear the current interval
  if (currentInterval > 0) {
    clearInterval(currentInterval);
  }

  var city = $("#searchbar").val();
  event.preventDefault();

  // set the new interval
  currentInterval = setInterval(function(){
    //...
  }, 1000);
});

相关问题