我正在使用NodeJS和Socket.IO,我在前端遇到了JQuery的这个问题。我没有得到任何错误,但是当我运行for循环时,JQuery将所有点击注册为一个按钮。 (例如,当您单击“添加面粉”按钮时,它会添加面包)。
CodePen:https://codepen.io/anon/pen/qXbbQg
使用Javascript:
var stocks = [ ["flour", 0], ["bread", 0] ];
var getNumInput = function(id){
return Number(document.getElementById(id).value);
};
window.onload = function() {
var socket = io(); // Server will see this as connection
for(x in stocks) {
$("#" + stocks[x][0] + "Remove").click(function(){
stocks[x][1] = stocks[x][1] - getNumInput(stocks[x][0] + "In");
socket.emit('stocksUpdate', stocks);
});
$("#" + stocks[x][0] + "Add").click(function(){
stocks[x][1] = stocks[x][1] + getNumInput(stocks[x][0] + "In");
socket.emit('stocksUpdate', stocks);
});
}
HTML:
<h1 id="flour">Waiting for connection to server</h1>
<form action="">
<button type="button" name="button" style="width: 100px; height: 30px;" id="flourRemove">Remove</button>
<input type="number" name="flourIn" value="10" id="flourIn">
<button type="button" name="button" style="width: 100px; height: 30px;" id="flourAdd">Add</button>
</form>
<h1 id="bread">Waiting for connection to server</h1>
<form action="">
<button type="button" name="button" style="width: 100px; height: 30px;" id="breadRemove">Remove</button>
<input type="number" name="breadIn" value="10" id="breadIn">
<button type="button" name="button" style="width: 100px; height: 30px;" id="breadAdd">Add</button>
</form>
我在服务器端所做的就是发出我收到的信息,以便所有用户都可以看到它,所以不要担心套接字代码。