循环函数在javascript中工作20次,但随后返回NaN run=0 函数getLowestPrice(id){ $.get('/items/'+id+'/privatesaleslist',函数(数据){ var html=$(数据); var lowestPrice=parseInt($('.currency-robux',html).eq(0).text().replace(',',''); 控制台日志(最低价格); }) } 同时(运行

循环函数在javascript中工作20次,但随后返回NaN run=0 函数getLowestPrice(id){ $.get('/items/'+id+'/privatesaleslist',函数(数据){ var html=$(数据); var lowestPrice=parseInt($('.currency-robux',html).eq(0).text().replace(',',''); 控制台日志(最低价格); }) } 同时(运行,javascript,jquery,google-chrome,Javascript,Jquery,Google Chrome,我使用此代码的网页: 当我运行这段代码时,它成功运行了20次,返回3997,然后我收到“NaN”的垃圾邮件 我想让这个程序做的是检查商品的价格,只要我想,然后在chrome控制台中报告。为什么函数工作20次,然后返回NaN 我是javascript的初学者,所以请解释您的解决方案,以便像我这样的初学者能够理解 谢谢:)嘿,伙计,我想你的部分问题在于while循环机制。每当run达到100,您的函数将停止被调用 您可以使用setInterval函数。它将每隔“x”毫秒调用传递它的任何函数 setI

我使用此代码的网页:

当我运行这段代码时,它成功运行了20次,返回3997,然后我收到“NaN”的垃圾邮件

我想让这个程序做的是检查商品的价格,只要我想,然后在chrome控制台中报告。为什么函数工作20次,然后返回NaN

我是javascript的初学者,所以请解释您的解决方案,以便像我这样的初学者能够理解


谢谢:)

嘿,伙计,我想你的部分问题在于while循环机制。每当run达到100,您的函数将停止被调用

您可以使用setInterval函数。它将每隔“x”毫秒调用传递它的任何函数

setInterval将每隔5秒调用id为362081769的getLowestPrice

run = 0
function getLowestPrice(id){
   $.get('/items/' + id + '/privatesaleslist', function(data){
      var html = $(data);
      var lowestPrice = parseInt($('.currency-robux', html).eq(0).text().replace(',', ''));
      console.log(lowestPrice);
   })
}
while (run < 100) 
{
getLowestPrice(362081769);
run = run + 1
}
这里还有一个指向正式setInterval文档的链接。


我希望这会有所帮助:)

查看每个
$中返回的数据。在“开发人员工具”网络选项卡中获取
,是否正确?您正在循环中进行异步调用,该调用将继续执行。我认为您可能希望在$.get的回调中增加run var。console.log(run)在回调中查看奇怪之处。@JaromandX我发现了问题!Roblox不喜欢我提出这么多的请求,所以20分钟后它会停止给我的反馈。有办法吗?@ant我如何增加它?哇,这真的很有用!我认为另一个问题是roblox不喜欢我多次要求私人销售清单。有什么我能解决的吗?这很正常。每当您使用外部API时,它们通常会限制您可以发出的请求量。目前,setInterval设置为在5000时每5秒运行一次。您可以将该值增加到您想要的任何值。每30秒就有30000人。每分钟6万美元。60万美元每10分钟一次。如果你觉得这有用或有帮助,不要害怕对答案投赞成票。先谢谢你。好的,非常感谢你的帮助!这肯定会有帮助!
const id = 362081769
function getLowestPrice(){
  $.get('/items/' + id + '/privatesaleslist', function(data){
  var html = $(data);
  var lowestPrice = parseInt($('.currency-robux', html).eq(0).text().replace(',', ''));
  console.log(lowestPrice);
 })
}

setInterval(getLowestPrice, 5000);