javascript - 在用户输入的屏幕上分隔文本
问题描述
我有一个 HTML 页面,其中有一个<textarea>
元素。假设我有一个发送按钮,可以在屏幕上显示消息。当发送多条消息时,它们的位置将移至上一条发送的消息下方。新消息将放在单独的容器中(我做了边框)。我已经使用了这个有效的代码。实际上,它并没有完全奏效。当您输入多条消息时,它不会创建包含消息的新消息边框,而是将所有文本放在同一个元素中。
const button = document.getElementById("sendButton");
button.addEventListener("click", displayText);
function displayText() {
const display = document.getElementById("msg");
const textArea = document.getElementById("enterMsg");
display.append(
textArea.value,
document.createElement("br")
);
textArea.value = "";
}
body {
background-color: skyblue;
font-weight: bolder;
}
#enterMsg {
margin-top: 34%;
height: 130px;
width: 100%;
font-family: Arial, sans-serif;
font-size: 15px;
color: darkorange;
background-color: #d796ff;
font-weight: bolder;
}
.enterText {
font-family: Arial, sans-serif;
font-size: 15px;
color: darkorange;
background-color: #d796ff;
font-weight: bolder;
}
#sendButton {
margin-left: 96%;
}
#msg {
margin-left: 80%;
border: solid;
border-color: #b19cd9;
background-color: #b4ff94;
border-radius: 50px;
color: darkorange;
}
.extraSpace {
padding: 5px;
}
textarea::placeholder {
color: darkorange;
}
div.centered {
text-align: center;
border: solid;
border-color: blue;
margin-top: 10%;
margin-bottom: 10%;
}
.confirmButton {
text-align: center;
margin-bottom: 5px;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Main Page</title>
<link rel="stylesheet" href="style.css">
<script src="tools.js"></script>
</head>
<body>
<p id="msg" class="extraSpace"></p>
<textarea id="enterMsg" placeholder="Enter your message here..."></textarea>
<button id="sendButton" onclick="displayText('msg', 'enterMsg')">Send</button>
</body>
</html>
正如我所说,此代码有效,但它将所有消息放在一个元素中。有什么办法可以使新边框出现,其中包含输入的文本,而不是将每条消息放入单个元素中?
解决方案
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Main Page</title>
<link rel="stylesheet" href="style.css">
<script src="tools.js"></script>
</head>
<body>
<div id="messages"></div>
<textarea id="enterMsg" placeholder="Enter your message here..."></textarea>
<button id="sendButton" onclick="displayText('msg', 'enterMsg')">Send</button>
</body>
</html>
const button = document.getElementById("sendButton");
button.addEventListener("click", displayText);
const textArea = document.getElementById("enterMsg");
const container = document.getElementById("messages");
function displayText() {
// Create a new element with the message as it's inner text.
const message = document.createElement("p");
message.innerText = textArea.value;
message.setAttribute("class", "msg");
// Add that to the document
container.appendChild(message);
textArea.value = "";
}
您还必须更改样式表,因为msg
现在是一个类而不是一个 ID(因为其中会有多个
推荐阅读
- javascript - 在有和没有大小写的情况下计算数组中的相似词
- android - Calculating height when there is embedded tweet Android
- selenium - How to run groovy based JUnit Test Suite from the command line?
- azure - 从映像创建映像时“配置 VM 失败。需要计划信息”
- salesforce - 如何在 Salesforce Apex 中通过 Web 服务发送 Twilio SMS
- python - Python中的渠道归因(马尔可夫链模型)
- asp.net-web-api - 多层授权
- javascript - 为什么我无法在正文部分获取传递的参数?
- python - 张量流中双向 LSTM 的输入
- python - Python (flask/marshmallow)ValueError: too many values to unpack (expected 2)