即使if语句为false,Variable = true

时间:2014-10-30 15:30:09

标签: javascript jquery userscripts

我正在制作一个通知系统用户脚本..基本上它的作用是,它向一个带有.txt文件的网站发送GET请求。文件输出如下:

12345|User notification
all|Everyone will see this

12345是用户的ID,all只是设置为向所有人显示消息。当我写下用户的ID(如12345)时,它会向ID为12345的特定用户发送通知,如果我写了#34; all"它会向所有人发送通知。

问题:我为每个通知都有一个解雇按钮(因为两者都可以同时显示),但是当我同时解除这两个通知时,然后发送新通知,即使我解雇了一个通知,也会显示两个通知他们这是我的代码:

GM_xmlhttpRequest({
    method: "GET",
    url: "http://website.com/notification.txt",
    ignoreCache: false,
    onload: function(response){
        res = trim(response.responseText);
        array = res.split("\n");

        for(i = 0; i < array.length; i++) {
            array2 = array[i].split("|");

            if(array2[0] == uid) {
                userMessage = array2[1];
            }
            if(array2[0] == "all") {
                allMessage = array2[1];
            }
        }

        if(typeof userMessage !== 'undefined'){
            if(GM_getValue("userMessage") != userMessage) {  
                GM_setValue("userMessage", userMessage);
                GM_setValue("userDismiss", false);
            }
        }

        if(typeof allMessage !== 'undefined'){
            if(GM_getValue("allMessage") != allMessage) {
                GM_setValue("allMessage", allMessage);
                GM_setValue("allDismiss", false);
            }
        }
    }
});

看看这两个if语句:

if(array2[0] == uid) {

if(array2[0] == "all") {

检查用户ID是否等于用户的uid(用户ID)或是否显示all。然后看看这些:

if(GM_getValue("userMessage") != userMessage) { 

if(GM_getValue("allMessage") != allMessage) {

检查先前通知中存储的消息(GM_getValue内部)是否与刚收到的新数据不相等。如果它相同,它就不应该继续,但是,如果只有一个通知不同,它会说两个if语句都为真,然后继续。即使GM_getValue("userMessage") equals userMessage,它仍然会继续执行if语句,即使它显示!=

另外,我在userMessage,allMessage和GM_getValue()上尝试了console.log(),如果我尝试为所有人添加通知,则会说userMessage与GM_getValue相同(&#34) ; userMessage)。那些if语句出了问题,但我不知道是什么。

任何帮助将不胜感激。我很困惑,所以请帮助我。如果您需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

我认为您需要在此处正确定位一些变量,例如(allMessageuserMessage和其他一些变量。我认为,一旦你适当地allMessageuserMessage,你就会很好!

GM_xmlhttpRequest({
  method: "GET",
  url: "http://website.com/notification.txt",
  ignoreCache: false,
  onload: function(response){
    var res = trim(response.responseText);
    var array = res.split("\n");
    var array2 = [];
    var allMessage, userMessage;

    for(var i = 0; i < array.length; i++) {
        array2 = array[i].split("|");

        if(array2[0] == uid) {
            userMessage = array2[1];
        }
        if(array2[0] == "all") {
            allMessage = array2[1];
        }
    }

    if(typeof userMessage !== 'undefined'){
        if(GM_getValue("userMessage") != userMessage) {  
            GM_setValue("userMessage", userMessage);
            GM_setValue("userDismiss", false);
        }
    }

    if(typeof allMessage !== 'undefined'){
        if(GM_getValue("allMessage") != allMessage) {
            GM_setValue("allMessage", allMessage);
            GM_setValue("allDismiss", false);
        }
    }
  }
});

这种旧结果不会影响新结果。