Невозможно использовать .insertAdjacentHTML во вложенном цикле for

Как сказано в заголовке, я не могу использовать .insertAdjacentHTML, потому что просто не понимаю, как это сделать.

for(let i=1;i<=m;i++)
    {
        for(let j=1;j<=n;j++)
        {
            document.querySelector(".matrice-" + p).insertAdjacentHTML('beforeend', '<input class = "l' + i + 'c' + 'j" size = "3" maxlength = "4" inputmode = "numeric"></input>')
        }
        document.querySelector(".matrice-" + p).insertAdjacentHTML('beforeend', '<br/>')
    }
    }

Я хочу, чтобы входные классы были похожи на l1c1 l1c2 l1c3 и так далее, но я не могу заставить это j работать как переменная. Он используется как строка, поэтому все мои классы - l1cj l2cj и так далее.

Меня очень смущает тот факт, что мне приходится использовать так много кавычек.

Как его использовать, чтобы получить желаемый эффект?

Поведение ключевого слова "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
0
615
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Если у меня есть это право, вы пытаетесь создать матрицу из l строк и c столбцов. Вместо того, чтобы прикреплять элементы (как HTML) к DOM на каждой итерации цикла (что требует больших затрат производительности), просто вставьте каждый ввод в массив. Затем вы можете присоединиться к этому массиву и использовать insertAdjacentHTML для добавления HTML-кода на страницу в конце.

Здесь я также использовал литерал шаблона, чтобы не было путаницы в том, куда должны идти кавычки. Я добавил заполнитель для ввода, чтобы показать вам, как выглядят классы, чтобы вам не приходилось проверять страницу.

Надеюсь, это поможет.

const arr = [];
const m = n = 3;

for (let i = 1; i <= m; i++) {
  for (let j = 1; j <= n; j++) {
    const input = `
      <input
        class = "l${i}c${j}
        size = "3"
        maxlength = "4"
        inputmode = "numeric"
        placeholder = "l${i}c${j}"
      />`;
    arr.push(input);
  }
}

const root = document.querySelector('#root')
root.insertAdjacentHTML('beforeend', arr.join(''));
* {
  box-sizing: border-box;
}

#root {
  max-width: 100px;
  padding: 10px;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-gap: 10px;
}

input {
  -moz-appearance:textfield;
}
<div id = "root"></div>

Не могли бы вы объяснить это? "l $ {i} c $ {j}"

Octavian Niculescu 11.11.2018 21:10

В шаблон можно вставить буквальные переменные, например ${var}. Это означает, что вам не нужно держать строку в кавычках / отменять кавычки, чтобы вставить их.

Andy 11.11.2018 21:52

Извините за поздний ответ. Спасибо за ваше время. Сейчас попробую использовать.

Octavian Niculescu 18.11.2018 18:23

Ваше цитирование неверно. j не должен быть внутри кавычек.

document.querySelector(".matrice-" + p).insertAdjacentHTML('beforeend', '<input class = "l' + i + 'c' + j + '" size = "3" maxlength = "4" inputmode = "numeric"></input>')

Метод в другом ответе будет более эффективным - каждый раз, когда вы вызываете insertAdjacentHTML(), браузер должен анализировать новый HTML. Как правило, лучше делать все сразу.

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