Вывести в select все данные class
На странице произвольное кол-во span с определенным class.
Мне надо при клике на select в него вывести все эти значения. <span class="alliki">1</span> <span class="alliki">2</span> <span class="alliki">3</span> <span class="alliki">4</span> При клике на Select мне надо в него вставить все данные span, чтобы получилось вот так: <select id="select" onclick=""> <option>1</option> <option>2</option> <option>3</option> <option>4</option> </select> Не получается сделать, подскажите пжл как сделать |
djonA,
и что мешает циклом обойти все span? |
прохожусь так:
$(".alliki").each(function() {} а дальше как их вставить в select? |
djonA,
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <script> window.addEventListener('DOMContentLoaded', function() { var nodes = document.querySelectorAll('.alliki'), select = document.querySelector('select'); select.addEventListener('mousedown', function create() { [].forEach.call( nodes, function(span) { var val = span.innerHTML; var option = new Option(val, val); select.appendChild(option) }); select.removeEventListener('mousedown',create) }); }); </script> </head> <body> <span class="alliki">1</span> <span class="alliki">2</span> <span class="alliki">3</span> <span class="alliki">4</span> <select id="select" > </select> </body> </html> |
а если не привязываться к select id='select', а вставлять во все select с class='select'
Т.е скажем у меня на странице не 1 а несколько select с class='select' как во всех них вставить: <span class="alliki">1</span> <span class="alliki">2</span> <span class="alliki">3</span> <span class="alliki">4</span> <select class="select" > </select> <select class="select" > </select> при открытии 1 select вставлять во все select данные из span? |
djonA,
добавить цикл по селектам и всё |
djonA,
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <script> window.addEventListener('DOMContentLoaded', function() { window.addEventListener('mousedown', function create(event) { var nodes = document.querySelectorAll('.alliki'), selects = document.querySelectorAll('.select'); var cls = event.target.classList; if(cls && cls.contains("select")){ [].forEach.call( selects, function(select) { [].forEach.call( nodes, function(span) { var val = span.innerHTML; var option = new Option(val, val); select.appendChild(option) }) }) }; window.removeEventListener('mousedown',create) }); }); </script> </head> <body> <span class="alliki">1</span> <span class="alliki">2</span> <span class="alliki">3</span> <span class="alliki">4</span> <select class="select" > </select> <select class="select" > </select> </body> </html> |
Отлично спасибо все работает.
Только хочу повесить на onclick, ане при загрузке страницы, так как в случае добавление на страницу элементов, они не активны. пробую так но добавляется в двойном кол-ве option: <!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <script> function go123() { var nodes = document.querySelectorAll('.alliki'), selects = document.querySelectorAll('.select123'); window.addEventListener('mousedown', function create(event) { var cls = event.target.classList; if(cls && cls.contains("select123")){ [].forEach.call( selects, function(select123) { [].forEach.call( nodes, function(span) { var val = span.innerHTML; var option = new Option(val, val); select123.appendChild(option) }) }) }; window.removeEventListener('mousedown',create) }); }; </script> </head> <body> <span class="alliki">1</span> <span class="alliki">2</span> <span class="alliki">3</span> <span class="alliki">4</span> <select class="select123" onclick="go123();"> </select> <select class="select123" onclick="go123();"> </select> </body> </html> подскажите как при onclick проходится по span'ам и обновлять правильное кол-ве option в select'e, или просто удалить повторяющиеся значения option? |
djonA,
пост 7 сейчас сработает когда бы вы недобавили без всяких onclick |
если я нажал на select а после этого добавились span, то новый span не добавляется в select.
т.е не отрабатывает если после загрузки страницы у меня добавляются или span или select. А если на onclick вешаю, то отрабатывает но почему то дублирует значение, на каждый клик увеличивает кол-во выводимых в select option'ов |
djonA,
таk добаьте проверку что если span нет то return ... Цитата:
первоначальные условия у вас изменились ... кода для примера достаточно, далее сами... и так на заметку если вешать на клик , то кликать нужно будет дважды, чтоб увидеть результат. |
Часовой пояс GMT +3, время: 06:11. |