在以下代码中,变量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);
答案 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);
}