Как написать скрипт, который будет при клике на кнопку ОК, выводить указанное в поле ввода число смайликов на страницу?
Надо создать скрипт (лучше с циклом), который будет при клике на кнопку “ОК”, выводить указанное в поле ввода число смайликов на страницу.
.smile {
font-family: monospace;
font-size: 32px;
display: inline-block;
margin-left: 5px;
}
.smile-good:before {
content: "?";
}
body {
font-family: Arial, sans-serif;
background: linear-gradient(to right, rgb(41, 128, 185), rgb(109, 213, 250), rgb(255, 255, 255));
}
.wrap {
width: 50%;
background: #fff;
padding: 40px;
border-radius: 20px;
margin: 10% auto;
box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);
min-height: 120px;
}
.enter-item {
display: inline-flex;
margin-bottom: 40px;
}
.enter-item input {
border: 1px solid #d3d3d3;
border-right: 0;
border-radius: 3px 0 0 3px;
padding: 10px;
}
.enter-item button {
border: 1px solid #2b82bb;
background: #2b82bb;
color: #fff;
font-weight: bold;
border-radius: 0 3px 3px 0;
padding: 10px;
}
<div class="wrap">
<label class="enter-item">
<input id="input" type="number" placeholder="Введите число">
<button id="button">OK</button>
</label>
<div id="smiles">
<div class="smile smile-good"></div>
<div class="smile smile-good"></div>
</div>
</div>
PS Скрипт я очистил чтобы не путать.
Ответы (2 шт):
Автор решения: Denis640Kb
→ Ссылка
button.onclick = function () {
document.getElementById('smiles').innerHTML = "";
var value = document.getElementById('input').value;
for (let i=0;i<+value;i++){
var newElem = document.createElement('div');
newElem.value = value;
newElem.className = 'smile smile-good';
document.getElementById('smiles').appendChild(newElem);
}
}
.smile {
font-family: monospace;
font-size: 32px;
display: inline-block;
margin-left: 5px;
}
.smile-good:before {
content: "?";
}
body {
font-family: Arial, sans-serif;
background: linear-gradient(to right, rgb(41, 128, 185), rgb(109, 213, 250), rgb(255, 255, 255));
}
.wrap {
width: 50%;
background: #fff;
padding: 40px;
border-radius: 20px;
margin: 10% auto;
box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);
min-height: 120px;
}
.enter-item{
display: inline-flex;
margin-bottom: 40px;
}
.enter-item input {
border: 1px solid #d3d3d3;
border-right: 0;
border-radius: 3px 0 0 3px;
padding: 10px;
}
.enter-item button {
border: 1px solid #2b82bb;
background: #2b82bb;
color: #fff;
font-weight: bold;
border-radius: 0 3px 3px 0;
padding: 10px;
}
<div class="wrap">
<label class="enter-item">
<input id="input" type="number" placeholder="Введите число">
<button id="button">OK</button>
</label>
<div id="smiles">
<div class="smile smile-good"></div>
<div class="smile smile-good"></div>
</div>
</div>
Автор решения: OPTIMUS PRIME
→ Ссылка
const id = (bubu) => document.getElementById(bubu);
id('button').addEventListener('click', function(){
let length = +id('input').value;
let html = new Array( length ).fill('<div class="smile smile-good"></div>').join('');
// Создает массив длины `length`, заполняет одинаковыми строками, join склеивает всё в 1 строку.
id('smiles').innerHTML = html;
});
.smile {
font-family: monospace;
font-size: 32px;
display: inline-block;
margin-left: 5px;
}
.smile-good:before {
content: "?";
}
<input id="input" type="number" placeholder="Введите число">
<button id="button">OK</button>
<div id="smiles">
<div class="smile smile-good"></div>
<div class="smile smile-good"></div>
</div>