#javascript #html #jquery #css
#javascript #HTML #jquery #css
Вопрос:
Чего я хотел добиться, так это, по сути, добавления текста из ввода во что-то, что было добавлено совсем недавно. Возможно ли это? По сути, это похоже на веб-сайт для общения в чате. Текст, написанный пользователем, должен храниться в добавленном объекте, но я не могу этого добиться.
Подробности: — Ввод, в котором пользователь вводит сообщение. Кнопка, которая добавляет ввод, доступный только для чтения. Ввод, доступный только для чтения, должен содержать сообщение, введенное пользователем в исходном вводе.
Вот мой скрипт!
<html>
<head>
<title>Friend's Circle</title>
<style>
.Hammer-Div {
background-color: #3a3939;
color: white;
height: 100%;
width: 80px;
border-radius: 10px 10px 10px 10px;
transition: 0.4s;
position: fixed;
}
.container {
display: inline-block;
cursor: pointer;
}
.bar1,
.bar2,
.bar3 {
width: 35px;
height: 5px;
background-color: rgb(105, 105, 105);
margin: 6px 0;
transition: 0.4s;
}
.change .bar1 {
-webkit-transform: rotate(-45deg) translate(-9px, 6px);
transform: rotate(-45deg) translate(-9px, 6px);
}
.change .bar2 {
opacity: 0;
}
.change .bar3 {
-webkit-transform: rotate(45deg) translate(-8px, -8px);
transform: rotate(45deg) translate(-8px, -8px);
}
.Items {
cursor: pointer;
}
p {
font-size: 30px;
display: none;
}
.Results {
height: 100%;
width: 92.5%;
background-color: #585858;
border-radius: 10px 10px 10px 10px;
float: right;
}
.MessageBox {
width: 90%;
height: 80%;
border-radius: 10px 10px 10px 10px;
background-color: hsl(0, 1%, 27%);
border: none;
float: left;
margin-left: 1%;
margin-top: 0.5%;
color: white;
font-size: 30px;
padding-left: 20px;
}
.MessageUnit {
height: 10%;
width: 100%;
background-color: #383838;
border-radius: 10px 10px 10px 10px;
}
.Message{
height: 65px;
width: 40%;
background-color: #383838;
border-radius: 10px 10px 10px 10px;
border: none;
margin-left: 1%;
color: white;
font-size: 30px;
padding-left: 20px;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function () {
$("#Menu").click(function () {
var a = $("#HammerDiv");
a.css('width', '200px');
$("p").toggle();
setTimeout(function () { a.css('width', '80px'); }, 2500);
setTimeout(function () { $("p").toggle(); }, 2500);
});
});
$(document).ready(function () {
$("#SendMessage").click(function () {
$("#Results").append("<br><input readonly class='Message'><br>");
});
});
</script> </head>
<body bgcolor="#1a1a1a">
<div class="Hammer-Div" id="HammerDiv">
<center>
<div class="container" id="Menu"><br>
<div class="bar1"></div>
<div class="bar2"></div>
<div class="bar3"></div>
</div><br><br>
<img src="https://th.bing.com/th/id/OIP.PTArRyNau0VomdH647ex3gHaHa?w=183amp;h=183amp;c=7amp;o=5amp;pid=1.7"
style="opacity: 0.5; border-radius: 50%; height: 70px; width: 70px;">
<p>Chat</p>
</center>
</div>
<div class="Results" id="Results">
<center>
<div class="MessageUnit">
<input class="MessageBox" placeholder="Type Your Message Here!" id="MessageBox">
<img src="https://th.bing.com/th?q=Send Arrow Iconamp;w=120amp;h=120amp;c=1amp;rs=1amp;qlt=90amp;cb=1amp;pid=InlineBlockamp;mkt=en-WWamp;adlt=moderateamp;t=1amp;mw=247"
style="border-radius: 50%; width: 60px; height: 60px; border-color:#ffffff; margin-top: 0.5%; cursor: pointer;"
border="4px" id="SendMessage">
</div>
</center>
</div> </body>
</html>
Ответ №1:
Вот подход, который вам следует рассмотреть:
- Получить значение текста, введенного пользователем из
MessageBox
input
. - Создайте новый
input
тег, создайте егоreadonly
и присвоитеvalue
новому вводу значение изMessageBox
ввода - Добавьте входные данные в
Results
$("#SendMessage").click(function () {
// 1
const msgBoxIn = document.getElementById('MessageBox');
// 2
const text = msgBoxIn.value;
const newMsgIn = document.createElement('input');
newMsgIn.setAttribute('readonly', true);
// 3
newMsgIn.value = text;
const resultsDiv = documet.getElementById('Results');
const br = document.createElement('br');
resultsDiv.appendChild(br);
resultsDiv.appendChild(newMsgIn);
});
Результирующий HTML-код будет выглядеть следующим образом:
<div class="Results" id="Results">
<center>
<div class="MessageUnit">
<input class="MessageBox" placeholder="Type Your Message Here!" id="MessageBox">
<img src="https://th.bing.com/th?q=Send Arrow Iconamp;w=120amp;h=120amp;c=1amp;rs=1amp;qlt=90amp;cb=1amp;pid=InlineBlockamp;mkt=en-WWamp;adlt=moderateamp;t=1amp;mw=247"
style="border-radius: 50%; width: 60px; height: 60px; border-color:#ffffff; margin-top: 0.5%; cursor: pointer;"
border="4px" id="SendMessage">
</div>
</center>
<br>
<input readonly value='Value you added'>
</div>
Также обратите внимание, что вы использовали одно и то же имя для обоих id
и class
здесь : <div class="Results" id="Results">
. Только CSS, объявленный с помощью id
, будет применяться на основе правил специфичности CSS-селектора. Рассмотрим разные имена.
Примечание: фрагмент текста написан на простом JS. Подумайте, как вы можете использовать jquery для этого.
Комментарии:
1. Спасибо за ваш ответ. Я пытался использовать его, и это не сработало, но, по крайней мере, я получил ссылку. Еще раз спасибо!
2. Какие ошибки вы получили? Что именно не сработало?
3. Не совсем ошибка, просто значение не отображалось. Но мне удалось использовать для этого jquery. В любом случае спасибо вам за ваши усилия.