$ .get返回相同的数组

时间:2018-11-18 04:40:59

标签: javascript jquery

我想通过Google扩展程序获取特定网站中页面的类型。通过页面的类型,我的意思是新闻,讨论等。为此,我尝试使用$ .get,但它不能按照我想要的方式工作。我有以下代码:

    setInterval(check, 5000); //// execute the function
    var a = 1 /// number of the page (ex : https://example.com/1)
    var b = "https://example.com/" + a

    function check() {
    $.get(b, function(data){
     pg = $($.parseHTML(data.trim()))

    var c = pg.find(".someclass")[0]    
    var d = pg.find(".anotherclass")[0]
    /// one is always false (thats the difference between the pages). By knownig which is true and I know whats the type of the page.


    console.log(a) // number of the page
    console.log(b) // link of the page 
    console.log(c) // one type of page
    console.log(d) // another type of page


    if(c != undefined && d === undefined) { my code1; return a += 1;}
    if(d != undefined && c === undefined) { my code2; return a += 1;}   
/// if page does not exist it will do nothing until it get created.


})}

问题是,即使页面中的 c d ,我总是得到相同的结果。

第一次尝试未定义 c ,而 d 是一个对象。但是在第二个中, c 是一个对象, d 是未定义的,但我仍然得到 c 为未定义和 d 作为一个对象。问题出在站点以外的地方,因为如果将 a 更改为2,我将得到 c 作为对象,而将 d 定义为未定义。

对不起,英语错误。谢谢。

1 个答案:

答案 0 :(得分:1)

发现其他用户时,您的URL实际上没有更改,因为b设置了一次。

如果将b放在函数内,它将获得修改后的值a

使用setTimeout而不是setInterval来使您的$.get请求在再次运行之前完成也可能很有用。

var a = 1

function check() {
  var b = "https://example.com/" + a
  $.get(b, function(data){
    pg = $($.parseHTML(data.trim()))

    var c = pg.find(".someclass")[0]    
    var d = pg.find(".anotherclass")[0]

    if(c != undefined && d === undefined) { my code1; return a += 1;}
    if(d != undefined && c === undefined) { my code2; return a += 1;}
    setTimeout(check, 5000);
  })
}
check()