【发布时间】:2018-11-15 09:32:36
【问题描述】:
我想将表单中的username 输入传递给socket.emit params。然而,当我踏入socket.on function 时,userName 是未定义的。这应该是范围问题,而我不知道如何解决。
我省略了一些代码以简化问题。不需要让代码可运行,我只是想知道如何处理这个问题的方法。
$("button").click(function (event) {
event.preventDefault();
setUserName($("input[name=name]").val());
});
var userName;
function setUserName(userName2) {
userName=userName2;
}
var socket = io();
socket.on('connect', function () {
var params = {
name:userName
}
socket.emit('join', params, function (err) {
});
});
<body class="centered-form">
<div class="centered-form__form">
<form>
<div class="form-field">
<label>Display name</label>
<input type="text" name="name" autofocus/>
</div>
<div class="form-field">
<button id="submit">Submit</button>
</div>
</form>
</div>
</body>
<script src="/libs/jquery-3.1.0.min.js"></script>
<script src="/chat.js"></script>
【问题讨论】:
-
console.log(this)看看它是什么。此外,据我从您的 sn-p 可以看出,您在全局范围内将 userName 设置为 var,所以我不确定您为什么首先尝试使用this。
标签: javascript jquery html node.js socket.io