Перебрать массив
Добрый день форумчане, я новичок в jquery. Уже 2 часа ломаю голову с перебором. Помогите пожалуйста.
Имеем таблицу с числами. Нужно перебрать значения первых ячеек каждой строки до тех пор пока var quantity= parseInt($('#quantity_wanted').val(),10); if (quantity >= значения ячейки) { взять значение из второй ячейки этой строки; }; <table class="table-product-discounts"> <thead> <tr> <th>Кол-во</th> <th>Скидка</th> </tr> </thead> <tbody> <tr> <td>99</td> <td>1%</td> <td>лоремипсум</td> </tr> <tr> <td>200</td> <td>7%</td> <td>лоремипсум</td> </tr> </tbody> </table> |
SeeJ,
рисуйте таблицу и попытайтесь обьяснить что хотите получить в результате ... или сами each |
Добавил пример таблицы. На выходе должно быть следушее:
функция сравнивает td (с кол-вом) с введённым пользователем количеством (переменная quantity) и как только кол-во введенное равно или больше первой же перебираемой величины, функция останавливается и через .html вытягиевает нужный процент скидки (второй td) То что надо делать через .each ну или перебором for я уже понял, но вот целая картина не собирается в голове. |
SeeJ,
оно ? <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <style> span { border: 1px solid; } </style> <title>Document</title> <script src="//code.jquery.com/jquery-1.11.3.min.js"></script> </head> <body> <table class="table-product-discounts"> <thead> <tr> <th>Кол-во</th> <th>Скидка</th> </tr> </thead> <tbody> <tr> <td>99</td> <td>1%</td> <td>лоремипсум</td> </tr> <tr> <td>200</td> <td>7%</td> <td>лоремипсум</td> </tr> </tbody> </table> Quantity: <span id="quantity">99</span> Result: <span id="result"> </span> <script> var quantity = +$('#quantity').html(); var result = $('#result'); $('td').each(function (inx, td){ var tdValue = +td.innerHTML; if(tdValue >= quantity){ $(result).html(this.nextElementSibling.innerHTML); } return false; }); </script> </body> </html> |
Спасибо, навёл на правильные мысли. Плюс в карму.
Доработанный твой вариант. Берет последнюю подходящую скидку: $('td').each(function (inx, td){ var n = +td.innerHTML; if(quantity >= n){ result.push(this.nextElementSibling.innerHTML); } }); $('#result').html(result[result.length - 1]); |
SeeJ,
супер :) Правда я его сверху немного переделал) |
Цитата:
Цитата:
<!doctype html> <html lang="en"> <head> <title>Document</title> <meta charset="UTF-8"> <style> span { border: 1px solid; } </style> <script> window.addEventListener('DOMContentLoaded', function() { var tds = document.querySelectorAll('.table-product-discounts tr:nth-child(n+1) td:nth-child(1)'), quant = +document.querySelector('#quantity').innerHTML, res = document.querySelector('#result'); [].every.call(tds, function(td) { res.innerHTML = td.nextElementSibling.innerHTML; return +td.innerHTML < quant; }); }); </script> </head> <body> <table class="table-product-discounts"> <thead> <tr> <th>Кол-во</th> <th>Скидка</th> </tr> </thead> <tbody> <tr> <td>99</td> <td>1%</td> <td>лоремипсум</td> </tr> <tr> <td>200</td> <td>7%</td> <td>лоремипсум</td> </tr> </tbody> </table> Quantity: <span id="quantity">99</span> Result: <span id="result"> </span> </body> </html> |
Часовой пояс GMT +3, время: 02:05. |