Как сделать функцию на два элемента?

128
05 ноября 2019, 06:10

написала скрипт эмуляции проверки. На первом элемента все работает, на втором - нет. Как написать, чтобы работало для любого количества одинаковых полей?

let func = { 
    jsRandomFunction() { 
      let random = document.getElementsByClassName('js-random'); 
      let stateOfProcess = document.getElementsByClassName('form__field-blank'); 
      let image = document.getElementsByClassName('form__field-image'); 
 
      random[0].onclick = () => { 
 
 
        document.querySelectorAll('.form__field').forEach(function(wrapper) { 
          let random_boolean = Math.random() >= 0.5; 
          console.log(random_boolean); 
 
          if (random_boolean >= 0.5) { 
 
            stateOfProcess[0].classList.add('checked'); 
            stateOfProcess[0].classList.remove('canceled'); 
            stateOfProcess[0].innerHTML = "<span>Проверено</span> "; 
            image[0].style.display = 'none'; 
            image[0].classList.add('form__field-ok'); 
            image[0].classList.remove('form__field-upload'); 
 
 
          } else { 
            stateOfProcess[0].classList.add('canceled'); 
            stateOfProcess[0].classList.remove('checked'); 
            stateOfProcess[0].innerHTML = "<span>Отклонено</span> "; 
            image[0].style.display = 'none'; 
            image[0].classList.add('form__field-upload'); 
            image[0].classList.remove('form__field-ok'); 
 
          } 
        }); 
 
      } 
    } 
}; 
 
$(function () { 
    app.init(); 
});
.form__field { 
  display: flex; 
  align-items: center; 
  margin: 30px 0px; } 
  .form__field-image { 
    margin-right: 20px; 
    background-color: #fff; 
    width: 40px; 
    height: 40px; } 
  .form__field-upload { 
    background-image: url("../images/upload.svg"); 
    background-position: center; 
    background-repeat: no-repeat; 
    display: block !important; } 
  .form__field-wrapper { 
    display: flex; 
    flex-direction: column; 
    font-family: sans-serif; } 
  .form__field-text { 
    visibility: hidden; } 
  .form__field-span { 
    color: rgba(33, 33, 33, 0.6); 
    font-size: 12px; 
    padding: 5px 0px; } 
  .form__field-blank { 
    margin-left: 15px; } 
  .form__field-ok { 
    background-image: url("../images/ok.svg"); 
    background-position: center; 
    background-repeat: no-repeat; 
    display: block !important; } 
 
.upload { 
  margin: 0; 
  cursor: pointer; } 
  .upload:hover { 
    text-decoration: underline; } 
 
.checked { 
  color: #00FF00; } 
 
.canceled { 
  color: #FF0000; }
<div class="form"> 
      <div class="form__field"> 
        <div class="form__field-image form__field-upload"></div> 
        <div class="form__field-wrapper"> 
          <label class="upload js-random" for="upload">Загрузите скан страницы с фотографией</label> 
          <input id="upload" class="form__field-text"> 
          <span class="form__field-span">Размер файла не более 5Мб</span> 
        </div> 
        <div class="form__field-blank"></div> 
      </div> 
 
      <div class="form__field"> 
        <div class="form__field-image form__field-upload"></div> 
        <div class="form__field-wrapper"> 
          <label class="upload js-random" for="upload2">Страница с пропиской</label> 
          <input id="upload2" class="form__field-text"> 
          <span class="form__field-span">Размер файла не более 5Мб</span> 
        </div> 
        <div class="form__field-blank"></div> 
      </div>

Answer 1

      let random = document.getElementsByClassName('js-random'); 
      console.log(random); 
      let stateOfProcess = document.getElementsByClassName('form__field-blank'); 
      let image = document.getElementsByClassName('form__field-image'); 
      for(var i = 0 ; i < random.length;i++){ 
      random[i].onclick = () => { 
 
 
        document.querySelectorAll('.form__field').forEach(function(wrapper) { 
          let random_boolean = Math.random() >= 0.5; 
          console.log(random_boolean); 
 
          if (random_boolean >= 0.5) { 
 
            stateOfProcess[0].classList.add('checked'); 
            stateOfProcess[0].classList.remove('canceled'); 
            stateOfProcess[0].innerHTML = "<span>Проверено</span> "; 
            image[0].style.display = 'none'; 
            image[0].classList.add('form__field-ok'); 
            image[0].classList.remove('form__field-upload'); 
 
 
          } else { 
            stateOfProcess[0].classList.add('canceled'); 
            stateOfProcess[0].classList.remove('checked'); 
            stateOfProcess[0].innerHTML = "<span>Отклонено</span> "; 
            image[0].style.display = 'none'; 
            image[0].classList.add('form__field-upload'); 
            image[0].classList.remove('form__field-ok'); 
 
          } 
        }); 
 
      } 
      } 
      
.form__field { 
  display: flex; 
  align-items: center; 
  margin: 30px 0px; } 
  .form__field-image { 
    margin-right: 20px; 
    background-color: #fff; 
    width: 40px; 
    height: 40px; } 
  .form__field-upload { 
    background-image: url("../images/upload.svg"); 
    background-position: center; 
    background-repeat: no-repeat; 
    display: block !important; } 
  .form__field-wrapper { 
    display: flex; 
    flex-direction: column; 
    font-family: sans-serif; } 
  .form__field-text { 
    visibility: hidden; } 
  .form__field-span { 
    color: rgba(33, 33, 33, 0.6); 
    font-size: 12px; 
    padding: 5px 0px; } 
  .form__field-blank { 
    margin-left: 15px; } 
  .form__field-ok { 
    background-image: url("../images/ok.svg"); 
    background-position: center; 
    background-repeat: no-repeat; 
    display: block !important; } 
 
.upload { 
  margin: 0; 
  cursor: pointer; } 
  .upload:hover { 
    text-decoration: underline; } 
 
.checked { 
  color: #00FF00; } 
 
.canceled { 
  color: #FF0000; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<div class="form"> 
      <div class="form__field"> 
        <div class="form__field-image form__field-upload"></div> 
        <div class="form__field-wrapper"> 
          <label class="upload js-random" for="upload">Загрузите скан страницы с фотографией</label> 
          <input id="upload" class="form__field-text"> 
          <span class="form__field-span">Размер файла не более 5Мб</span> 
        </div> 
        <div class="form__field-blank"></div> 
      </div> 
 
      <div class="form__field"> 
        <div class="form__field-image form__field-upload"></div> 
        <div class="form__field-wrapper"> 
          <label class="upload js-random" for="upload2">Страница с пропиской</label> 
          <input id="upload2" class="form__field-text"> 
          <span class="form__field-span">Размер файла не более 5Мб</span> 
        </div> 
        <div class="form__field-blank"></div> 
      </div>

READ ALSO
Пагинация и чек боксы! Как их подружить? ASP.NET Core

Пагинация и чек боксы! Как их подружить? ASP.NET Core

Код, который получает отмеченные чек боксы и передаёт их методу в контроллер

101
Как удалить значение из input?

Как удалить значение из input?

Есть такая задача: Есть модальное окно, которое открывается при клике на InputВ этом модальном юзер выбирает определенные категории

214
Выпадающее меню на всю высоту

Выпадающее меню на всю высоту

Хочу сделать выпадающее меню на всю высоту экранаСделал через Height: 100vh

148
Как изменять видимость пароля в IE7

Как изменять видимость пароля в IE7

Я делаю скрытие/открытие пароля по нажатию кнопки

116