Javascript button.onclick不执行';当websocket服务器联机时nt工作

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

好吧,这很奇怪,我有一个前端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(“连接打开”);
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字符串是不可变的,如果不创建新字符串并为其分配引用(因为它只是字符串),则无法修改字符串,这可能足够了。因为它只是字符串,这可能足够了。