变量ID没有增加?

时间:2014-06-28 03:35:55

标签: jquery

在以下代码中,变量Id不随每个循环而增加 我用我当前的代码

更新了它

这是我的代码,谢谢

(function (d, s) {
s = d.createElement('script');
s.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.js';
(d.head || d.documentElement).appendChild(s);
s.onload = function () {
    jQuery.noConflict();
    jQuery(function ($) {
        var id = 158066137;;
        var link = 'http://api.roblox.com/marketplace/productinfo?assetId=' + id;
        function scan(val) {
            link = 'http://api.roblox.com/marketplace/productinfo?assetId=' + id;
            $.get(link, function (data) {
                var value = data;
                if (data.Creator.Id == 1 && data.Creator.Name == 'ROBLOX') {
                    var msg = "Created by " + data.Creator.Name + "\nObject Name " + data.Name + "\nAsset Id " + data.AssetId
                    console.log(msg);
                }
            });
        }
        setInterval(function() { scan(true); id++ }, 0);
    });
}
})(document);

2 个答案:

答案 0 :(得分:1)

我认为问题是行$(document),其中$指的是除jQuery之外的其他库(可能使用document.querySelectr())。

因此,作为解决方案,请尝试将脚本移动到动态脚本元素的onload处理程序,如

(function (d, s) {
    s = d.createElement('script');
    s.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.js';
    (d.head || d.documentElement).appendChild(s);
    s.onload = function () {
        //rever the value of $ to old one
        jQuery.noConflict();
        //use jQuery instead of $ to refer to jQuery object
        jQuery(function ($) {
            setInterval(function () {
                var id = 158066137;
                var link = 'http://api.roblox.com/marketplace/productinfo?assetId=' + id;
                $.get(link, function (data) {
                    var value = data;
                    if (data.Creator.Id == 1 && data.Creator.Name == 'ROBLOX') {
                        var msg = "Created by " + data.Creator.Name + "\nObject Name " + data.Name + "\nAsset Id " + data.AssetId
                        console.log(msg);
                    }
                    id++;
                });
            }, 0);
        });
    }
})(document);

答案 1 :(得分:1)

您在通过setInterval调用的函数内定义Id。首先不要使用setInterval,尤其是在函数产生ajax调用的情况下。我想你想要一个setTimeout。但是,最好不要谈论问题而不是实施选择。

// x => undefined
function foo() {
  var x = 1; // x => 1
  x++; // x => 2
}
foo(); // x => 2
foo(); // x => 2
foo(); // x => 2
// x => undefined

在上面的示例中,您永远不会将变量存储在函数范围之外,因此它会消失并再次返回。

// x => undefined
function foo() {
  var x = 1; // x => 1
  function bar() {
    x++; // x => x + 1
  }
  bar(); // x => 2
  bar(); // x => 3
  bar(); // x => 4
}
// x => undefined

所以你看到用更高范围的变量调用相同的函数将如何做你想要的。

function startPolling() {
  var x = 1;
  function next() {
    console.log(x++);
  }
  setInterval(next, 500);
}