Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.11.2015, 12:04
Новичок на форуме
Отправить личное сообщение для SeeJ Посмотреть профиль Найти все сообщения от SeeJ
 
Регистрация: 19.11.2015
Сообщений: 5

Перебрать массив
Добрый день форумчане, я новичок в 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, 19.11.2015 в 16:43.
Ответить с цитированием
  #2 (permalink)  
Старый 19.11.2015, 12:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

SeeJ,
рисуйте таблицу и попытайтесь обьяснить что хотите получить в результате ... или сами each
Ответить с цитированием
  #3 (permalink)  
Старый 19.11.2015, 16:48
Новичок на форуме
Отправить личное сообщение для SeeJ Посмотреть профиль Найти все сообщения от SeeJ
 
Регистрация: 19.11.2015
Сообщений: 5

Добавил пример таблицы. На выходе должно быть следушее:
функция сравнивает td (с кол-вом) с введённым пользователем количеством (переменная quantity) и как только кол-во введенное равно или больше первой же перебираемой величины, функция останавливается и через .html вытягиевает нужный процент скидки (второй td)
То что надо делать через .each ну или перебором for я уже понял, но вот целая картина не собирается в голове.
Ответить с цитированием
  #4 (permalink)  
Старый 19.11.2015, 17:06
Профессор
Отправить личное сообщение для Mess4me Посмотреть профиль Найти все сообщения от Mess4me
 
Регистрация: 03.11.2014
Сообщений: 263

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>

Последний раз редактировалось Mess4me, 19.11.2015 в 17:25.
Ответить с цитированием
  #5 (permalink)  
Старый 19.11.2015, 17:31
Новичок на форуме
Отправить личное сообщение для SeeJ Посмотреть профиль Найти все сообщения от SeeJ
 
Регистрация: 19.11.2015
Сообщений: 5

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

$('td').each(function (inx, td){
	var n = +td.innerHTML;
	if(quantity  >= n){
		result.push(this.nextElementSibling.innerHTML);
        }
});
$('#result').html(result[result.length - 1]);
Ответить с цитированием
  #6 (permalink)  
Старый 19.11.2015, 17:36
Профессор
Отправить личное сообщение для Mess4me Посмотреть профиль Найти все сообщения от Mess4me
 
Регистрация: 03.11.2014
Сообщений: 263

SeeJ,
супер
Правда я его сверху немного переделал)
Ответить с цитированием
  #7 (permalink)  
Старый 19.11.2015, 18:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Сообщение от 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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно перебрать элементы добавить их в массив и добавить к элементам класс Сергей_FE Оффтопик 8 30.08.2015 17:06
Конвертация в массив Alex1233 Общие вопросы Javascript 12 13.05.2015 12:04
Перебрать массив daMage Events/DOM/Window 4 05.10.2010 15:15
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14
Подскажите, как вернуть js-скрипт массив Polkan AJAX и COMET 18 30.04.2010 23:30