инспекция кода random'айзера

251
14 апреля 2022, 17:20

Данный код генерирует числа из введённого диапазона. Можете показать на ошибки в коде, и как его можно улучшить.

function rand(){
let num = Math.random()
let maxval = max.value
let minval = min.value
label.innerHTML = Math.round(num * (maxval - minval) + minval)
} 
body{
background: linear-gradient(90deg, red, blue);
}
table{
width: 50%;
height: 50%;
margin: 25%;
}
input{
width: 100%;
height: 100%;
}
label{
width: 100%;
height: 100%;
}
button{
width: 100%;
height: 100%;
}
<table>
<tr><th><input id="min" valuetype="number" ></th></tr>
<tr><th><input id="max" valuetype="number" ></th></tr>
<tr><th><label id="label" >0</label></th></tr>
<tr><th><button onclick="rand()">generate</button></th></tr>
</table>

Answer 1
  1. Можно использовать flex-box для разметки.
  2. Использовать функцию как инструмент для получения числа от min до max, а не для получения и вывода в конкретное место.
  3. Добавить проверки для пустых полей
  4. Слушать нажатие на кнопку в javascript, а не в атрибутах html, js для логики, html для отображения.

const label = document.querySelector('.result');
const button = document.querySelector('.button');
button.addEventListener('click', () => {
  const min = document.querySelector('.min').value;
  const max = document.querySelector('.max').value;
  if (min !== '' && max !== '') {
    label.innerHTML = randomize(min, max);
  };
});
function randomize(min, max) {
  const random = Math.random(min, max);
  return Math.round(random * (max - min) + max);
};
body {
  background: linear-gradient(90deg, red, blue);
}
.form {
  width: 50%;
  height: 50%;
  margin: 25%;
  display: flex;
  flex-direction: column;
}
.result {
  color: #fff;
  font-size: 18px;
  font-family: sans-serif;
  text-align: center;
  margin: 5px 0;
}
<div class="form">
  <input type="number" class="min" />
  <input type="number" class="max" />
  <button class="button">Randomize</button>
  
  <div class="result"></div>
</div>

READ ALSO
Создание адаптивного меню навигации в сетку 2&#215;2

Создание адаптивного меню навигации в сетку 2×2

У меня есть навигационное меню которое надо сделать адаптивным Само меню состоит из 4 кнопок, и мне нужно что бы они перестраивались в сетку...

193
Перестали отображаеться svg через url data

Перестали отображаеться svg через url data

Всем привет! Спустя несколько лет перестали отображаеться svg через url data

240
Необычный лоадер из падающих капель

Необычный лоадер из падающих капель

Идея инспирирована ответом

248
Как поместить один блок под другой?

Как поместить один блок под другой?

Появилась задача - поместить SVG блок под блок описания, но так, чтобы он оказался ПОД блоком описанияВот что у меня вышло:

200