Javascript 通过socket.io单击按钮时触发函数
我有以下节点服务器和index.html文件,当我在浏览器中的多个选项卡或窗口中打开index.html文件时,当我单击按钮时,它会在所有打开的选项卡和窗口中显示“已单击”按钮,但在所有选项卡中,按钮颜色不会更改,它只会在单击按钮的选项卡中更改 app.jsJavascript 通过socket.io单击按钮时触发函数,javascript,button,socket.io,onclick,click,Javascript,Button,Socket.io,Onclick,Click,我有以下节点服务器和index.html文件,当我在浏览器中的多个选项卡或窗口中打开index.html文件时,当我单击按钮时,它会在所有打开的选项卡和窗口中显示“已单击”按钮,但在所有选项卡中,按钮颜色不会更改,它只会在单击按钮的选项卡中更改 app.js const io = require('socket.io')(3000); io.on('connection', function (socket) { console.log('a client has connected')
const io = require('socket.io')(3000);
io.on('connection', function (socket) {
console.log('a client has connected');
socket.on('clicked', function() {
io.emit('clicked');
});
});
console.log('socket.io server started at port 3000');
index.html
<!doctype html>
<html>
<head>
<title>Testing socket.io</title>
</head>
<body>
<input type="button" id="button" style="width: 100px; padding: 10px; box-shaddow: 10px 6px 5px; #999999; -webkit-box-shadow: 6px 6px 5px #999999; -moz-box-shadow: 6px 6px 5px #999999; font-weight: bold; background: #16ed07; color: #000000; cursor: pointer; border-radius: 10px; border: 1px solid #D9D9D9; font-size: 150%;" value="Send!" onClick="onClickHandler(this)"/>
<h2 id="alert"> waiting...</h2>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.7.3/socket.io.min.js"></script>
<script>
var socket = io("http://localhost:3000");
socket.on('connect', function() {
document.getElementById("button").addEventListener("click", function () {
socket.emit("clicked");
});
});
socket.on('clicked', function() {
console.log('clicked');
document.getElementById("alert").innerHTML = "send clicked";
});
</script>
<script type="text/javascript">
function onClickHandler(elem) {
elem.style.background = 'red';
elem.style.color = 'black';
}
</script>
</body>
</html>
测试socket.io
等待。。。
变量套接字=io(“http://localhost:3000");
socket.on('connect',function(){
document.getElementById(“按钮”).addEventListener(“单击”),函数(){
socket.emit(“单击”);
});
});
socket.on('clicked',function(){
console.log('clicked');
document.getElementById(“警报”).innerHTML=“单击发送”;
});
函数onClickHandler(elem){
elem.style.background='红色';
elem.style.color='黑色';
}
将“onClickHandler”调用添加到“clicked”事件回调,如:
socket.on('clicked', function() {
var button = document.getElementById('button');
console.log('clicked');
document.getElementById("alert").innerHTML = "send clicked";
onClickHandler(button);
});
将“onClickHandler”调用添加到“clicked”事件回调,如:
socket.on('clicked', function() {
var button = document.getElementById('button');
console.log('clicked');
document.getElementById("alert").innerHTML = "send clicked";
onClickHandler(button);
});
io.sockets.emit('clicked')代码>io.sockets.emit('clicked')代码>我可以让按钮按其值而不是按id@vamshi您可以尝试以下操作:document.queryselectoral(“按钮[value='Send!'])
在我的例子中,我从另一个页面的表单中获取按钮值,这样按钮值在一个选项卡和另一个选项卡中会有所不同,并且在一个页面中会有多个按钮,所以我仍然可以使用您的建议吗?document.querySelectorAll(“按钮[value='Send!']”代码>无效我可以让按钮按其值而不是按id@vamshi您可以尝试以下操作:document.queryselectoral(“按钮[value='Send!'])
在我的例子中,我从另一个页面的表单中获取按钮值,这样按钮值在一个选项卡和另一个选项卡中会有所不同,并且在一个页面中会有多个按钮,所以我仍然可以使用您的建议吗?document.querySelectorAll(“按钮[value='Send!']”代码>不起作用