Создание ссылок из выпадающего списка
Добрый день уважаемый. Столкнулся с такой задачей => На мобильных устройствах для сайта необходимо реализовать сортировку товара, и что б оно выглядела как множество кнопочек. Поскольку как таковая сортировка уже есть через select (для десктоп версии) мною было принято решение сделать отдельное попап поле в которое по нажатию на кнопку одноразово будут формироваться ссылки с адресами из этого select .
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> <style> .btn_sorted__mobile { border: 1px solid #000; padding: 5px; } .bl_sortField{ width: 300px; min-height: 300px; border: 1px solid #f00; } .test{ display: block; margin-bottom: 5px; color: #f00; } </style> </head> <body> <button class="btn_sorted__mobile" type="button">Сортировать</button> <div class="bl_sorter"> <select class="bl_sorter__select js-mainSorter" onchange="location = this.value;"> <option value="http://test1">По популярности</option> <option value="http://test2">Название (А - Я)</option> <option value="http://test3">Название (Я - А)</option> <option value="http://test4">Сначала подешевле</option> <option value="http://test5">Сначала подороже</option> </select> </div> <div class="bl_sortField"></div> <script> window.onload = function () { var btnSorted = $(".btn_sorted__mobile"), blockSortField = $(".bl_sortField"); btnSorted.one('click', function(){ var numberOfSelect = $(".js-mainSorter option").length; var sorterSelectVal = $(".js-mainSorter option").each(function(){$(this).val()}); var sorterSelectText = $(".js-mainSorter option").each(function(){$(this).text()}); for(var i = 0; i < numberOfSelect; i++){ blockSortField.append('<a class="test" href=" ' + sorterSelectVal.eq(i) +' " >' + sorterSelectText.eq(i) + '</a>') } console.log("numberOfSelect =" + numberOfSelect); console.log( "sorterSelectVal =" + sorterSelectVal ); console.log( "sorterSelectText =" + sorterSelectText ); }); } </script> </body> </html> Попробовал реализовать, но что-то пошло не так. Не могу понять почему мне сыпятся объекты а не их значения? Подскажите как исправить ? |
Black_Star,
строки 47 и 48 пустышки, код правильный но ни о чём. |
Black_Star,
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> <style> .btn_sorted__mobile { border: 1px solid #000; padding: 5px; } .bl_sortField{ width: 300px; min-height: 300px; border: 1px solid #f00; } .test{ display: block; margin-bottom: 5px; color: #f00; } </style> </head> <body> <button class="btn_sorted__mobile" type="button">Сортировать</button> <div class="bl_sorter"> <select class="bl_sorter__select js-mainSorter" onchange="location = this.value;"> <option value="http://test1">По популярности</option> <option value="http://test2">Название (А - Я)</option> <option value="http://test3">Название (Я - А)</option> <option value="http://test4">Сначала подешевле</option> <option value="http://test5">Сначала подороже</option> </select> </div> <div class="bl_sortField"></div> <script> window.onload = function () { var btnSorted = $(".btn_sorted__mobile"), blockSortField = $(".bl_sortField"); btnSorted.one('click', function(){ $(".js-mainSorter option").each(function(){ blockSortField.append('<a class="test" href=" ' + this.value +' " >' + this.text + '</a>') }); }); } </script> </body> </html> |
рони та что ж в нём правильного, если он не о чём ? :)
Я просто был уверен что мне .each надергает значений которыми я смогу потом воспользоваться, а вижу что это не так |
рони, спасибо:thanks:
|
Цитата:
видимо хотели что-то такое ... вариант ниже только для демострации!!! <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> <style> .btn_sorted__mobile { border: 1px solid #000; padding: 5px; } .bl_sortField{ width: 300px; min-height: 300px; border: 1px solid #f00; } .test{ display: block; margin-bottom: 5px; color: #f00; } </style> </head> <body> <button class="btn_sorted__mobile" type="button">Сортировать</button> <div class="bl_sorter"> <select class="bl_sorter__select js-mainSorter" onchange="location = this.value;"> <option value="http://test1">По популярности</option> <option value="http://test2">Название (А - Я)</option> <option value="http://test3">Название (Я - А)</option> <option value="http://test4">Сначала подешевле</option> <option value="http://test5">Сначала подороже</option> </select> </div> <div class="bl_sortField"></div> <script> window.onload = function () { var btnSorted = $(".btn_sorted__mobile"), blockSortField = $(".bl_sortField"); btnSorted.one('click', function(){ var numberOfSelect = $(".js-mainSorter option").length; var sorterSelectVal = $(".js-mainSorter option").map(function(){return $(this).val()}); var sorterSelectText = $(".js-mainSorter option").map(function(){return $(this).text()}); for(var i = 0; i < numberOfSelect; i++){ blockSortField.append('<a class="test" href=" ' + sorterSelectVal.eq(i)[0] +' " >' + sorterSelectText.eq(i)[0] + '</a>') } }); } </script> </body> </html> |
Спасибо, за пояснение
|
Часовой пояс GMT +3, время: 08:42. |