Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Суммировать индекси двух массива (https://javascript.ru/forum/jquery/76386-summirovat-indeksi-dvukh-massiva.html)

Hovik 07.01.2019 15:36

Суммировать индекси двух массива
 
Здравствуйте у меня такой вопрос, как можно умножить индекси двух массивах ?.

<div class="calc1">
<span>1dr</span>
<span>2dr</span>
<span>3dr</span>
<span></span>
<input type="text"></input>
<input type="text"></input>
<input type="text"></input>
<input type="text" disabled></input>

</div>


<div class="block1"></div>
<button class="btn">button</button>
1- получаем всё input у которых нет disabled ,
2- получаем всё span которые не пустые и делаем parseint
3- умножим индекс первого массива с индексом второго массива.
4- запишем результат в .block1

Заранее благодарю за ответ.

var inputs = $(".calc input").get();
var spans = parseint($(".calc span").text().get());

laimas 07.01.2019 15:53

Цитата:

Сообщение от Hovik
$(".calc input")

Это как если имя класса calc1?

var p = $(".calc1").children(),
    input = p.filter('input:not(:disabled)'), //1
    span = p.filter('span:not(:empty)'); //2 get() - это уже DOM набор


3) - что значит умножить индекс?

Hovik 07.01.2019 16:41

В input выведется цифры , в span цифры и строка,
span parseint вычесляем цифры.
var spans = Array(цифры из span);
var inputs = Array(введение цыфры);
spans [ x] * inputs [ x] ;

laimas 07.01.2019 16:48

Цитата:

Сообщение от Hovik
В input выведется цифры , в span цифры и строка

И как вы собираетесь умножать стоку? Если же есть span содержащие только числа, то тогда нужно фильтром выбрать именно такие, и если такие будут, то только тогда умножать. Впрочем как и требуется проверка не пусто ли поле, или присваивать 0, если не пусто.

Hovik 07.01.2019 16:52

По моему здесь логика должен быть таким.
Праверяем if input != ""; патамучта кагда оно пуста то выводить nan.
Патом while или foreach вычесляем индекси из двух массивах и умножим друг другу 0*0, 1*1, 2*2, 3*3 ...

Hovik 07.01.2019 16:55

Функция parseInt() разве не вычесляет цыфры из строк?

laimas 07.01.2019 17:20

Цитата:

Сообщение от Hovik
вычесляем индекси из двух массивах

Зачем? Получить по условию можно так:

var p = $(".calc1").children(),
    span = p.filter(function() {
        return this.textContent.match(/^\d$/)
    }), //только те, в которых числа
    input = p.filter(function() {
        return this.type=='text' && !this.disabled && this.value.match(/^\d$/)
    }); //только если не пустое значение и число


Если как ранее упоминалось, первые, то можно сразу добавить .first() в каждую цепочку. Если же все, то ведь не обязательно, что число элементов двух массивов будет равно, да и вообще будет ли что-то возвращено. Если же возвращено, то нужно брать меньший массив, а из большего срез равный меньшему. Хотя бог его знает, чего вам надо.

laimas 07.01.2019 17:23

Цитата:

Сообщение от Hovik
parseInt() разве не вычесляет цыфры из строк?

Она вообще ничего не вычисляет, она преобразовывает строку в число если возможно. Если это является условием, то проверяйте это в фильтре.

Hovik 07.01.2019 18:00

Я извиняюсь, ошибка было моей. Я должен был сказать вам что это калькулятор и в span написание цену за единицу + руб. а в input каличество , результат будет записаться в div class blok1

laimas 07.01.2019 18:16

И это может быть набором таких значений и число обеих наборов (не пустых) всегда равно?

PS. Если калькулятор, то видимо нужно брать не просто непустые и разрешенные, а пары, соотносящиеся друг к другу элементы?


Часовой пояс GMT +3, время: 06:45.