Соответствующее целевое значение JS в массиве

У меня есть цикл for, который отвечает за открытие пользовательского модального окна. Кнопка открытия определяется как несколько элементов с классом .col-sm-4.

Вот код:

// Get the modal
var modal = document.getElementById('myModal');

// Get the opening trigger
var btn = document.getElementsByClassName('col-sm-4');

for (var i = 0; i < btn.length; i++) {
  // Open modal by clicking the order display
  btn[i].onclick = function(event) {

    // Check to see if target is the parent element
    if (event.target.tagName.toLowerCase() === 'div') {

      modal.style.display = 'block';
      document.getElementsByClassName('col-sm-4');
      var idDIVOrderParent = btn[0].id;
      // Having trouble grabbing the correct ID
      console.info('The order ID is ' + idDIVOrderParent);

      // extract orderId9999 from string like parentOrderId9999
      var idDIVOrder = 'o' + idDIVOrderParent.substr(7);
      console.info('The modal is currently displaying ' + idDIVOrder);

      document.getElementById(idDIVOrder).style.display = 'block';
    } else {
      // console.info('Child element clicked!');
    }
  }
}

Там, где написано, что var idDIVOrderParent = btn[0].id, у меня возникают трудности. Как я могу получить идентификатор правильного .col-sm-4, который запустил модальное окно?

Вы можете получить доступ к нажатой кнопке через event.target.

Alex 11.05.2018 21:40

Вы можете использовать event.currentTarget.id вместо btn[0] или создать закрытие.

Titus 11.05.2018 21:41
document.getElementsByClassName('col-sm-4'); <- эта строка ничего не делает
epascarello 11.05.2018 21:41

Спасибо @Alex и @Titus! Не знаю, почему я не подумал об этом раньше.

Wallace L. 11.05.2018 22:04

У меня есть дополнительный вопрос: если я хочу закрыть модальное окно с помощью кнопки X и щелкнув за пределами модального дисплея, как я могу применить display: none к тому же .col-sm-4? Вот код для закрытия модального. Извините за неполный фрагмент.

Wallace L. 11.05.2018 22:47
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
49
1

Ответы 1

Это должно помочь.

var modal = document.getElementById('myModal');
var btn = document.getElementsByClassName('col-sm-4');

for (let i = 0; i < btn.length; i++) {
  btn[i].onclick = function(event) {

    if (event.target.tagName.toLowerCase() === 'div') {
      modal.style.display = 'block';

      let idDIVOrderParent = btn[i].id;
      console.info('The order ID is ' + idDIVOrderParent);

      let idDIVOrder = 'o' + idDIVOrderParent.substr(7);
      modal.textContent = idDIVOrder;
      console.info('The modal is currently displaying ' + idDIVOrder);
    }
  }
}
#myModal {
  width: 200px;
  text-align: center;
  background: #ccc;
  display: none;
}
<div id = "parentOrderId9999" class = "col-sm-4">btn1</div>
<div id = "parentOrderId1111" class = "col-sm-4">btn2</div>
<div id = "parentOrderId2222" class = "col-sm-4">btn3</div>
<div id = "parentOrderId3333" class = "col-sm-4">btn4</div>

<div id = "myModal"></div>

Другие вопросы по теме