查询函数参数是否等于变量

时间:2015-06-10 22:51:33

标签: javascript html node.js socket.io

我正在尝试这样做,以便当一个人在聊天中键入特定的字符串时,它会查询我是否将他们的名字放入“播放器”变量中,如果是,则执行其余的脚本。如果不是,脚本将不会执行。

工作原理:

  1. 管理员类型“!ff ContestantName”
  2. 这会将参赛者名称存储在我可以查询的内容中
  3. 参赛者类型“!回答Answerhere”,if语句允许它运行其余的脚本。
  4. 如果有其他人输入“!answer ????”它忽略了它们。

    client.addListener('chat', function (channel, user, message) {
    console.log(user.username + ': ' + message); // Posts message
    var msg = message;
    var Answerstate = 0;
    var answer = '';
    var GameStatus = 0;
    var player;
    var user = user.username;
    
    if (msg.toLowerCase().indexOf("!ff") == 0) {
        var parts = msg.split(" ");
        if(parts.length > 1) {
            parts.shift();
            player = parts.join(" "); // define the player
            client.say(channel, player + " wants to play Family Fortunes!");
            GameStatus = 1;
            console.log('Game initiliased. Set GameStatus:' + GameStatus);
            console.log('Username: ' + player);
        }
    }
    if (user == player) { // If I remove this if statement, it executes.
        if (msg.toLowerCase().indexOf("!answer") == 0) {
            if (Answerstate < 5) { //If Answerstate is less than 5
                var parts = msg.split(" ");
                if(parts.length > 1) {
                    Answerstate = Answerstate + 1; //Increase State
                    console.log('Answerstate ' + Answerstate);
                    parts.shift();
                    var answer = parts.join(" ");
                    io.emit('answer', answer); //If Answerstate > 5 then execute emit.
                    console.log('Going over to index.html | io.emit "answerState": ' + answer);
                }
            }
        }
    } else { console.log('Attempted answer by: ' + player) } 
    

    });

  5. 奇怪的是,它说attempted answer by: undefined。即使我执行!ff命令而不是!answer,这可以在这里看到:

    enter image description here

    请你解释为什么这样做?

    由于

1 个答案:

答案 0 :(得分:0)

因为“player”是一个局部变量,每次执行该函数时都会重新初始化?将其声明移到功能之外,看看是否有帮助 将“if(player == user)”更改为“else if(player == user)”,以便如果消息以“!ff”开头,则不会说“尝试回答”。
“尝试回答”应该显示“用户”,而不是“玩家” 此外,还有关于“if answerState&gt; 5”的评论没有实现;我不知道你想在那里发生什么。

var GameStatus = 0;
var Answerstate = 0;
var player;

client.addListener('chat', function (channel, user, message) {
    console.log(user.username + ': ' + message); // Posts message
    var msg = message;
    var answer = '';
    var user = user.username;

    if (msg.toLowerCase().indexOf("!ff") == 0) {
        var parts = msg.split(" ");
        if(parts.length > 1) {
            parts.shift();
            player = parts.join(" "); // define the player
            client.say(channel, player + " wants to play Family Fortunes!");
            GameStatus = 1;
            console.log('Game initiliased. Set GameStatus:' + GameStatus);
            console.log('Username: ' + player);
        }
    }
    else if (user == player) {
        if (msg.toLowerCase().indexOf("!answer") == 0) {
            if (Answerstate < 5) { //If Answerstate is less than 5
                var parts = msg.split(" ");
                if(parts.length > 1) {
                    Answerstate = Answerstate + 1; //Increase State
                    console.log('Answerstate ' + Answerstate);
                    parts.shift();
                    var answer = parts.join(" ");
                    io.emit('answer', answer); //If Answerstate > 5 then execute emit.
                    console.log('Going over to index.html | io.emit "answerState": ' + answer);
                }
            }
        }
    }
    else {
        console.log('Attempted answer by: ' + user)
    }
});
相关问题