Javascript 如何将表单输入值传递到socket.emit parms中的变量

Javascript 如何将表单输入值传递到socket.emit parms中的变量,javascript,jquery,html,node.js,socket.io,Javascript,Jquery,Html,Node.js,Socket.io,我想将表单中的用户名输入传递到socket.emit参数。但是,当我进入函数上的socket.on时,用户名未定义。这应该是范围问题,而我不知道如何解决这个问题。 为了简化问题,我省略了一些代码。没有必要让代码可以运行,我只是想知道如何处理这个问题 $(“按钮”)。单击(函数(事件){ event.preventDefault(); setUserName($(“输入[name=name]”).val(); }); var用户名; 函数setUserName(userName2){ 用户名=用

我想将表单中的
用户名
输入传递到
socket.emit
参数
。但是,当我进入函数上的
socket.on时,
用户名
未定义。这应该是范围问题,而我不知道如何解决这个问题。 为了简化问题,我省略了一些代码。没有必要让代码可以运行,我只是想知道如何处理这个问题

$(“按钮”)。单击(函数(事件){
event.preventDefault();
setUserName($(“输入[name=name]”).val();
});
var用户名;
函数setUserName(userName2){
用户名=用户名2;
}
var socket=io();
socket.on('connect',function(){
变量参数={
姓名:用户名
}
发出('join',参数,函数(err){
});
});

显示名称
提交

您的用户名存在范围界定问题

$(“按钮”)。单击(函数(事件){
event.preventDefault();
setUserName($(“输入[name=name]”).val();
});
var用户名;
函数setUserName(用户名){
//这是指功能的范围
this.userName=用户名;
}
var socket=io();
socket.on('connect',function(){
变量参数={
//这是指套接字的范围
名称:this.userName
}
发出('join',参数,函数(err){
});

});
console.log(这个)
,看看它是什么。此外,从您的代码片段中可以看出,您在全局范围内将userName设置为var,因此我不确定您为什么要首先尝试使用
。是的,我尝试过,但它仍然没有定义。如果我给用户名赋值,比如var userName=“888”,params中的用户名将是“888”。问题很可能发生在单击事件或连接事件中。在调用click和on时尝试控制台日志记录。修改后会自动启动吗?套接字连接何时启动?