Javascript button.onclick不执行';当websocket服务器联机时nt工作
好吧,这很奇怪,我有一个前端js文件和一个html文件:Javascript button.onclick不执行';当websocket服务器联机时nt工作,javascript,html,websocket,onclick,event-listener,Javascript,Html,Websocket,Onclick,Event Listener,好吧,这很奇怪,我有一个前端js文件和一个html文件: const conn=newwebsocket('ws://localhost:8000'); const main=document.querySelector('.main'); const send=document.querySelector(“#send”); const text=document.querySelector(“#text”); conn.onopen=()=>{ console.log(“连接打开”); c
const conn=newwebsocket('ws://localhost:8000');
const main=document.querySelector('.main');
const send=document.querySelector(“#send”);
const text=document.querySelector(“#text”);
conn.onopen=()=>{
console.log(“连接打开”);
conn.send(‘heyya’);
}
conn.onmessage=message=>main.innerHTML+=message.data;
conn.onerror=error=>console.log(“web套接字不可用”);
send.addEventListener('click',e=>{
console.log('send');
})
文件
邮寄
等于
main.innerHTML = main.innerHTML + message.data
会破坏里面的一切,然后重新创造。发生这种情况时,事件绑定将消失。您应该使用类似的方法,或者可以添加新元素将新消息注入,例如:
<body>
<div class="main">
<input type="text" name="" id="text">
<button id="send">Send</button>
<ul id="messages"></ul>
</div>
</body>
邮寄
等于
main.innerHTML = main.innerHTML + message.data
会破坏里面的一切,然后重新创造。发生这种情况时,事件绑定将消失。您应该使用类似的方法,或者可以添加新元素将新消息注入,例如:
<body>
<div class="main">
<input type="text" name="" id="text">
<button id="send">Send</button>
<ul id="messages"></ul>
</div>
</body>
邮寄
我注意到您需要改进的一件事是您应该:-
conn.send(JSON.stringify('heyya'))
在WebSocket上发送数据时
并在接收时执行相同操作:-
JSON.parse(message)
,然后以您想要的方式使用“message”。我注意到您需要改进的一件事是您应该:-
conn.send(JSON.stringify('heyya'))
在WebSocket上发送数据时
并在接收时执行相同操作:-
JSON.parse(message)
,然后以您想要的方式使用“message”。如何等待?这一行添加了更多的html,而不是重写,对吗?@me.nkr DOM不像字符串那样工作,它是对象的集合。当您更改innerHTML
时,所有子对象都将基于新的HTML字符串被销毁并重新创建。@me.nkr即使是字符串操作,Javascript字符串也是不可变的,如果不创建新字符串并为其分配引用,就无法修改字符串。如何?这一行添加了更多的html,而不是重写,对吗?@me.nkr DOM不像字符串那样工作,它是对象的集合。当您更改innerHTML
时,所有子对象都将根据新的HTML字符串销毁并重新创建。@me.nkr即使是字符串操作,Javascript字符串是不可变的,如果不创建新字符串并为其分配引用(因为它只是字符串),则无法修改字符串,这可能足够了。因为它只是字符串,这可能足够了。