中断集间隔和变量未定义

Break setInterval and variable undefined

本文关键字:变量 未定义 中断      更新时间:2023-09-26

我是Javascript的新手,并尝试做这个脚本。点击它应该抓住项目的价格并停止价格下降。点击时,它不会停止,也不会抓住显示的价格。请指教。

价格应为:-

起始价: 100最低最高价: 90

function updateValue(task) {
  var amount = document.getElementById("amount").value + "00";
  var maxamt = document.getElementById("maxamount").value + "00";
  var amountgrabbed = document.getElementById("revese-amt").value;
  var decimal_places = 2;
  var decimal_factor = decimal_places === 0 ? 1 : Math.pow(10, decimal_places);
  var floored_number = Math.floor(amount) / decimal_factor;
  var floored_number_max = Math.floor(maxamt) / decimal_factor;
  floored_number = floored_number.toFixed(decimal_places);
  floored_number_max = floored_number_max.toFixed(decimal_places);
  if (task == "stop") {
    console.log(amountgrabbed);
    check(refreshid, "stop", amountgrabbed);
  } else {
    var refreshid = setInterval(function() {
      floored_number = floored_number - 1 / 100;
      floored_number = floored_number.toFixed(decimal_places);
      if (floored_number < floored_number_max) {
        check(refreshid, "over");
      } else {
        $('#revese-amt').html(floored_number);
      }
    }, 100);
  }
}
function check(refreshid, status, amt) {
  if (status == "over") {
    clearInterval(refreshid);
    $('#revese-amt').html('Deal Gone!');
  } else if (status == "stop") {
    console.log(amt);
    clearInterval(refreshid);
    alert('Congratulations! You have grabbed the item @ price of RM ' + amt);
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input 
     type="text" 
     name="amount" 
     id="amount" 
     value="Start Price" 
     onclick=""/>
<BR>
<BR>
<input 
     type="text" 
     name="maxamount" 
     id="maxamount" 
     value="Lowest Max Price" 
     onblur="updateValue()"
 />
<span id="maxa"></span>
<BR>
<BR>
<div 
     style="width:130px; height:50px; background-color:red;"          
     onclick="updateValue('stop')">
  <center>MYR
    <p id="revese-amt"></p>
  </center>
</div>

您可以更改以下内容的代码:

第一个HTML p标签,必须使用textContent方法来获取其文本。

// change
var amountgrabbed = document.getElementById("revese-amt").value;
// to
var amountgrabbed = document.getElementById("revese-amt").textContent;

更改

 var amountgrabbed = document.getElementById("revese-amt").value;

 var amountgrabbed = $('#revese-amt').html();

所以这符合你的分配

 $('#revese-amt').html(floored_number);

然后在全局空间中声明您的 var refreshid 变量。让它随时随地访问。

  $refreshid = setInterval(function() {
  floored_number = floored_number - 1 / 100;
  floored_number = floored_number.toFixed(decimal_places);
  if (floored_number < floored_number_max) {
    check(refreshid, "over");
  } else {
    $('#revese-amt').html(floored_number);
  }
}, 100);