简体   繁体   English

中断setInterval和变量未定义

[英]Break setInterval and variable undefined

I'm new to Javascript and tried doing this script. 我刚接触Javascript,并尝试执行此脚本。 Onclick it should grab the price of the item and stop the price dropping. Onclick它应该抓住项目的价格并停止价格下降。 Onclick, it doesn't stop and it doesn't grab the price shown. Onclick,它不会停止并且不会抓住显示的价格。 Please advise. 请指教。

The price should be:- 价格应该是:-

Start Price: 100 Lowest Max Price: 90 起拍价: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> 

You can change your code about below: 您可以在以下位置更改代码:

first html p tag ,must use textContent method to get its text. 首先是html p标签,必须使用textContent方法获取其文本。

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

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

Change 更改

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

To

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

So that is matches your assignment of 因此,这与您分配的

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

And then declare your var refreshid variable in the global space. 然后在全局空间中声明var refreshid变量。 Giving it access everywhere. 使其无处不在。

  $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