当我在 HTML 中删除表单时,为什么我的 WebSocket 不工作?
Why is my WebSocket not working when I remove a form in HTML?
我正在使用 WebSocket 来显示一个特定的值,该值计算所有时间对我网站的所有访问已经过去了多少秒。例如,如果用户 A 在我的站点上花费了 20 秒,用户 B 花费了 30 秒,用户 C 花费了 10 秒,则计数器增加了 60 秒。计数器不断更新。这是我在 JavaScript 和 HTML 中的代码。现在,我想从 HTML 中删除表单,但是当我这样做时,我得到文本“[object HTMLTextAreaElement]”。我该如何解决这个问题并让我的网站正常运行?
var socket = new WebSocket('ws://echo.websocket.org');
function count() {
if(! counter){
var counter = 1;
} else {
counter = counter + 1;
};
socket.send(counter);
document.getElementById('messages').innerHTML = '<li>' + message + '</li>';
}
setInterval(count, 1000);
count();
window.close() = function() {
socket.close();
};
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>
WebSockets Demo
</title>
</head>
<body>
<div id="page-wrapper">
<h1>
WebSockets Demo
</h1>
<ul id="messages">
</ul>
<form id="message-form" action="#" method="post">
<textarea id="message" required></textarea>
<button type="submit">
Send Message
</button>
</form>
</div>
<script src="app.js">
</script>
</body>
</html>
您的变量 message
未在您的代码中定义。因此,它会引用你的 HTML DOM 对应的id,即 <textarea id="message" required></textarea>
.
我假设你想显示从回显服务器返回的消息。如果是这样,代码将如下所示:
var socket = new WebSocket('wss://echo.websocket.org');
var counter = 0;
function count() {
counter++;
socket.send(counter);
}
socket.onmessage = function(evt){
document.getElementById('messages').innerHTML += '<li>' + evt.data + '</li>';
};
socket.onopen = function(){
setInterval(count, 1000);
count();
};
window.close() = function() {
socket.close();
};
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>
WebSockets Demo
</title>
</head>
<body>
<div id="page-wrapper">
<h1>
WebSockets Demo
</h1>
<ul id="messages">
</ul>
<form id="message-form" action="#" method="post">
<textarea id="message" required></textarea>
<button type="submit">
Send Message
</button>
</form>
</div>
<script src="app.js">
</script>
</body>
</html>
我正在使用 WebSocket 来显示一个特定的值,该值计算所有时间对我网站的所有访问已经过去了多少秒。例如,如果用户 A 在我的站点上花费了 20 秒,用户 B 花费了 30 秒,用户 C 花费了 10 秒,则计数器增加了 60 秒。计数器不断更新。这是我在 JavaScript 和 HTML 中的代码。现在,我想从 HTML 中删除表单,但是当我这样做时,我得到文本“[object HTMLTextAreaElement]”。我该如何解决这个问题并让我的网站正常运行?
var socket = new WebSocket('ws://echo.websocket.org');
function count() {
if(! counter){
var counter = 1;
} else {
counter = counter + 1;
};
socket.send(counter);
document.getElementById('messages').innerHTML = '<li>' + message + '</li>';
}
setInterval(count, 1000);
count();
window.close() = function() {
socket.close();
};
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>
WebSockets Demo
</title>
</head>
<body>
<div id="page-wrapper">
<h1>
WebSockets Demo
</h1>
<ul id="messages">
</ul>
<form id="message-form" action="#" method="post">
<textarea id="message" required></textarea>
<button type="submit">
Send Message
</button>
</form>
</div>
<script src="app.js">
</script>
</body>
</html>
您的变量 message
未在您的代码中定义。因此,它会引用你的 HTML DOM 对应的id,即 <textarea id="message" required></textarea>
.
我假设你想显示从回显服务器返回的消息。如果是这样,代码将如下所示:
var socket = new WebSocket('wss://echo.websocket.org');
var counter = 0;
function count() {
counter++;
socket.send(counter);
}
socket.onmessage = function(evt){
document.getElementById('messages').innerHTML += '<li>' + evt.data + '</li>';
};
socket.onopen = function(){
setInterval(count, 1000);
count();
};
window.close() = function() {
socket.close();
};
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>
WebSockets Demo
</title>
</head>
<body>
<div id="page-wrapper">
<h1>
WebSockets Demo
</h1>
<ul id="messages">
</ul>
<form id="message-form" action="#" method="post">
<textarea id="message" required></textarea>
<button type="submit">
Send Message
</button>
</form>
</div>
<script src="app.js">
</script>
</body>
</html>