【问题标题】:Script only runs once脚本只运行一次
【发布时间】:2012-05-26 22:11:11
【问题描述】:

这是一个脚本,[应该]刷新页面,查找价格,如果价格低于用户指定的价格,则购买。如果价格更高,它会刷新页面并再次执行,直到找到价格:

var tags = document.getElementsByTagName('b');
var price;
var lp;
var sp;
var setSnipe = false;
var loaded = false;
for (i = 0; i < tags.length; i++) {
    console.log(tags[i].innerHTML);
    if( tags[i].innerHTML.indexOf('R$') !== -1) {
        if (i==5){
            var price = tags[i].innerHTML.match(/\d+/)[0];
            setSnipe = confirm("Lowest price: R$" + price +". Set a sniper?");
        } else {
        }
    } else {
    }
}
if (setSnipe == true) {
    lp = prompt("Snipe Price?");
    refresh();
}

function refresh() {
    location.reload(true);
    setTimeout('checkSnipe()', 3000);
}

function checkSnipe() {
    var tagss = document.getElementsByTagName('b');
    for (i = 0; i < 6; i++) {
        console.log(tagss[i].innerHTML);
        if( tagss[i].innerHTML.indexOf('R$') !== -1) {
            if (i==5){
                var price = tagss[i].innerHTML.match(/\d+/)[0];
                price = Number(price);
                if (price<=lp){
                    alert("Snipe Found!");
                } else {
                    alert("No snipe");
                    refresh();
                }
            }
        }
    }
}

由于某种原因,它只运行一次然后停止。有什么建议/帮助吗?

谢谢, 亚历克斯

【问题讨论】:

  • 当然有更好的方法来做到这一点...除非这是家庭作业。
  • @Jeff 不是硬件任务,是为 roblox.com 自己做的。显然不是最好的脚本编写者:/
  • 您是否考虑过发出 AJAX 请求并刷新页面内容,而不是刷新页面?
  • @Alex 没关系,我们已经看到了更糟糕的情况 ;) 我批评你的方法比你的脚本知识更多,你显然是基于你的示例代码。虽然我不知道这个程序的确切性质,但我建议尽量避免页面刷新;这将使事情变得更加顺利。此外,在 setTimeout 函数中使用匿名函数 (function(){checkSnipe()}) 而不是字符串通常是一种很好的做法。

标签: javascript


【解决方案1】:

当您刷新时,您的代码不再存在。您有一个带有新代码的新页面。当你明白这一点时,很明显不存在的代码将无法运行。

【讨论】:

  • 只要代码在iframe之外,都可以。但是访问iframe 中的元素(以及重新加载iframe)需要更多的工作。但是,使用 AJAX 会更容易和更好。
  • 谢谢,从没听说过 AJAX,但我不知道。
  • 我应该说,使用像 jQuery 这样的优秀库支持的 AJAX 会更好。手工做 AJAX 有点痛苦,而且充满陷阱。
  • 这是我的意思:[roblox.com/Poison-Horns-item?id=62152671]。如果你能指出我正确的方向..
【解决方案2】:

即使用户刷新浏览器,也要尽量让您的代码保持不变。另外,再次检查你的代码,它可能有一些逻辑错误(你可能在 if-else 部分放错了大括号)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-16
    • 2012-01-08
    • 1970-01-01
    • 2018-01-30
    • 2023-04-09
    • 2011-02-26
    • 2019-03-23
    相关资源
    最近更新 更多