无法更改变量值javascript

时间:2016-12-30 22:31:39

标签: javascript

所以我正在制作一个脚本,可以节省whatsapp上每个人在线的每一秒(在whatsapp网站上)

我有这个:

//add zeros (run only once)
function addZero(i) {
  if (i < 10) {
    i = "0" + i;
  }
  return i;
}

//Inject jQuery (run only once)
var jq = document.createElement('script');
jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);

// make online log
//start
var online = "yes";
var onlineCheck1 = window.setInterval(function() {
  var x = $('#main>header>div.chat-body>div.chat-status>span').text()
  var name = $('#main>header>div.chat-body>div.chat-main>.chat-title>span').text()
  var d = new Date();
  if (x == "online") {
    var online = "yes";
    console.log(d.toLocaleDateString('en-GB') + "|" + addZero(d.getHours()) + ":" + addZero(d.getMinutes()) + ":" + addZero(d.getSeconds()) + " " + name + " " + "was" + " " + "///online///");
  } else if (online == "yes") {
    console.log("<------------>")
    var online = "no";
  } else {
    var online = "no";
  }

}, 1000); //end

并且当有人在线时它会记录,但我希望当该人离线时它只放一个标记(&lt; ------------&gt;)并且它没有这样做。

所以我想要这个脚本做的是:
使变量“online”变为“yes”,然后使用值为元素的内部文本的变量“x”(这是在线或最后一次看到.....)
然后看看x是否在线?然后将“在线”的值更改为“是”,记录日期和时间,如果没有,并且变量“在线”的值是否为“是”?然后记录一个标记(&lt; ------------&gt;)并将“在线”的值更改为“否”如果不是?然后只需将变量“online”的值更改为“no”并重复 我不知道出了什么问题,但可能因为某些原因变量没有改变。

注意:我正在使用chrome的控制台在web.whatsapp.com上运行此脚本,所以如果你想看看我的意思,你可以尝试一下。

2 个答案:

答案 0 :(得分:2)

首先,你的代码看起来有点脏 - 把函数放出setInterval。

其次,如果来自谷歌的Jquery脚本(在代码开头注入)被卡住并且在调用时没有定义$,该怎么办?

然后,使用setTimeout并递归调用它而不是setInterval。

至于你的变量&#34; online&#34; - 你使用&#34; var&#34;在你的功能中,所以&#34; var online&#34;在你的匿名中创建。功能范围和外部&#34; var online&#34;不受你的操纵影响。尝试删除&#34; var&#34;在你的匿名里面的词。 setInterval中的函数。

答案 1 :(得分:1)

尝试从if-else语句中要更改的变量中删除“var”关键字...