IgorBee
@IgorBee
JS,VBS,3D.Web с 07.2015

Как оптимальнее всего проверять есть такой элемент или нет?

полный код

isc.96.lt/t/inputTest/js/main.js

var inputs= checkBoxes.getElementsByTagName('input');

 function creatSelected(){

 // console.log(inputs);

  for(var i=0; i<inputs.length; i++){

    if(inputs[i].checked ===true ){
      var creatDiv = document.createElement('div');

      creatDiv.innerHTML =inputs[i].parentNode.textContent;
      creatDiv.classList.toggle('educationCreate');

      multySelect.appendChild(creatDiv);

     console.log(inputs[i].parentNode.textContent );

    };

  };

  //console.log(inputs.length);

 };


274714ee149347dc82cff297379027ee.png

Чтобы не создавались одинаковые элементы,и если галочка снята то удалять такой див снизу.

я думал циклом проверять innerHTML каждого созданного дива с классом "educationCreate",но может есть более оптимизированные решения?

или при выборе элемента, создавать элемент с id=’select_visshee’, и при снятии галочки искать элемент по идентификатору который складывается из ’select_’+(name чекбокса)
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
@Ridz
window.addEventListener("DOMContentLoaded", function() {
    var clickHandler = "click";
    if ("ontouchstart" in document.documentElement) clickHandler = "touchstart";
    var multiselect = document.querySelector(".multiselect"),
        select = multiselect.querySelector(".selectBox"),
        checkboxes = multiselect.querySelector("#checkboxes");
    select.addEventListener(clickHandler, function(event) {
        checkboxes.classList.toggle("show");
        checkboxes.classList.contains("show") ? window.addEventListener(clickHandler, hide) : window.removeEventListener(clickHandler,hide)
    });
    multiselect.addEventListener(clickHandler, function(event) {
        event.stopPropagation();
        creatSelected()
    });

    function hide() {
        checkboxes.classList.remove("show");
        window.removeEventListener(clickHandler, hide)
    }
    var inputs = checkboxes.getElementsByTagName("input"),
        obj = {};

    function creatSelected() {
        for (var i = 0; i < inputs.length; i++) {
            var div = obj[i];
            if (inputs[i].checked) {
                if (!div) {
                    obj[i] = div = document.createElement("div");
                    div.innerHTML = inputs[i].parentNode.textContent;
                    div.className = "educationCreate"
                }
                multiselect.appendChild(div)
            } else if (div && div.parentNode) multiselect.removeChild(div)
        }
    }
   creatSelected()
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы