Перебрать массив
Добрый день форумчане, я новичок в 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, время: 01:10. |