Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Перебрать массив (https://javascript.ru/forum/jquery/59616-perebrat-massiv.html)

SeeJ 19.11.2015 12:04

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

рони 19.11.2015 12:36

SeeJ,
рисуйте таблицу и попытайтесь обьяснить что хотите получить в результате ... или сами each

SeeJ 19.11.2015 16:48

Добавил пример таблицы. На выходе должно быть следушее:
функция сравнивает td (с кол-вом) с введённым пользователем количеством (переменная quantity) и как только кол-во введенное равно или больше первой же перебираемой величины, функция останавливается и через .html вытягиевает нужный процент скидки (второй td)
То что надо делать через .each ну или перебором for я уже понял, но вот целая картина не собирается в голове.

Mess4me 19.11.2015 17:06

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>

SeeJ 19.11.2015 17:31

Спасибо, навёл на правильные мысли. Плюс в карму.
Доработанный твой вариант. Берет последнюю подходящую скидку:

$('td').each(function (inx, td){
	var n = +td.innerHTML;
	if(quantity  >= n){
		result.push(this.nextElementSibling.innerHTML);
        }
});
$('#result').html(result[result.length - 1]);

Mess4me 19.11.2015 17:36

SeeJ,
супер :)
Правда я его сверху немного переделал)

рони 19.11.2015 18:24

Цитата:

Сообщение от SeeJ
Нужно перебрать значения первых ячеек

Цитата:

Сообщение от 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.