Есть такая HTML структура:
<div class="pol"></div>
<div class="change">
<i>1</i>
<i>2</i>
<i>3</i>
<i>4</i>
<i>5</i>
<i>6</i>
<i>7</i>
<i>8</i>
<i>9</i>
</div>
Таких структур у меня 80 штук. Необходимо чтобы по клику на число оно добавлялось в .pol
.
Как это сделать?
Для этого можно добавить обработчик события click
каждому <i>
, в котором в качестве текста в .pol
устанавливать соответствующее число:
var pol = document.querySelector(".pol");
document.querySelectorAll(".change i").forEach(function(element) {
element.addEventListener("click", function() {
pol.textContent = element.textContent;
});
});
<div class="pol"></div>
<div class="change">
<i>1</i>
<i>2</i>
<i>3</i>
<i>4</i>
<i>5</i>
<i>6</i>
<i>7</i>
<i>8</i>
<i>9</i>
</div>
Если нужно не заменять текст в .pol
, а добавлять число в конец текста, то достаточно использовать pol.textContent +=
вместо pol.textContent =
.
Так как в вопросе отсутствует метка jQuery, то и в решении jQuery не используется.
document.querySelector(".change").addEventListener('click', function(e) {
if (e.target.tagName === 'I') {
document.querySelector(".pol").textContent += e.target.textContent
}
})
.pol:empty:before { content: "\A0" }
<div class="pol"></div>
<div class="change">
<i>1</i>
<i>2</i>
<i>3</i>
<i>4</i>
<i>5</i>
<i>6</i>
<i>7</i>
<i>8</i>
<i>9</i>
</div>
Будет тоже полезным...
;(function(){
var polElems = document.getElementsByClassName('pol');
var changeElems = document.querySelectorAll('.change > i');
Array.prototype.forEach.call(changeElems, function(item) {
item.addEventListener('click', function(){
var self = this;
Array.prototype.forEach.call(polElems, function(pol){
var newItem = self.cloneNode(true);
// Может пригодится
newItem.addEventListener('click', function(){
this.remove();
});
pol.appendChild(newItem);
});
});
});
})();
<div class="pol"></div>
<div class="change">
<i>1</i>
<i>2</i>
<i>3</i>
<i>4</i>
<i>5</i>
<i>6</i>
<i>7</i>
<i>8</i>
<i>9</i>
</div>
<!-- для примера -->
<div class="pol"></div>
<div class="pol"></div>
Если вам нужно чтобы просто добавлялось как тест, тогда вот самый простой вариант как по мне:
$('.change').on('click', 'i', function() {
$('.pol').append($(this).text());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="pol"></div>
<div class="change">
<i>1</i>
<i>2</i>
<i>3</i>
<i>4</i>
<i>5</i>
<i>6</i>
<i>7</i>
<i>8</i>
<i>9</i>
</div>
Всем привет, очень нужна помощьСоздавая новый тестовый блок в меню методом
Решил на новом компьютер склонировать проект, который правильно собирался на старомМетодом проб и ошибок определил, что не срабатывает copy-webpack-plugin...
У меня есть массив чисел [65, 44, 12, 4], Мне надо получить новый массив в котором будет сложение цифр каждого элемента массива