繁体   English   中英

中断setInterval和变量未定义

[英]Break setInterval and variable undefined

我刚接触Javascript,并尝试执行此脚本。 Onclick它应该抓住项目的价格并停止价格下降。 Onclick,它不会停止并且不会抓住显示的价格。 请指教。

价格应该是:-

起拍价: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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM