Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.01.2019, 14:36
Аспирант
Отправить личное сообщение для Hovik Посмотреть профиль Найти все сообщения от Hovik
 
Регистрация: 15.10.2018
Сообщений: 73

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

<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());

Последний раз редактировалось Hovik, 07.01.2019 в 15:32.
Ответить с цитированием
  #2 (permalink)  
Старый 07.01.2019, 14:53
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 10,641

Сообщение от 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) - что значит умножить индекс?

Последний раз редактировалось laimas, 07.01.2019 в 16:04.
Ответить с цитированием
  #3 (permalink)  
Старый 07.01.2019, 15:41
Аспирант
Отправить личное сообщение для Hovik Посмотреть профиль Найти все сообщения от Hovik
 
Регистрация: 15.10.2018
Сообщений: 73

В input выведется цифры , в span цифры и строка,
span parseint вычесляем цифры.
var spans = Array(цифры из span);
var inputs = Array(введение цыфры);
spans [ x] * inputs [ x] ;
Ответить с цитированием
  #4 (permalink)  
Старый 07.01.2019, 15:48
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 10,641

Сообщение от Hovik
В input выведется цифры , в span цифры и строка
И как вы собираетесь умножать стоку? Если же есть span содержащие только числа, то тогда нужно фильтром выбрать именно такие, и если такие будут, то только тогда умножать. Впрочем как и требуется проверка не пусто ли поле, или присваивать 0, если не пусто.
Ответить с цитированием
  #5 (permalink)  
Старый 07.01.2019, 15:52
Аспирант
Отправить личное сообщение для Hovik Посмотреть профиль Найти все сообщения от Hovik
 
Регистрация: 15.10.2018
Сообщений: 73

По моему здесь логика должен быть таким.
Праверяем if input != ""; патамучта кагда оно пуста то выводить nan.
Патом while или foreach вычесляем индекси из двух массивах и умножим друг другу 0*0, 1*1, 2*2, 3*3 ...
Ответить с цитированием
  #6 (permalink)  
Старый 07.01.2019, 15:55
Аспирант
Отправить личное сообщение для Hovik Посмотреть профиль Найти все сообщения от Hovik
 
Регистрация: 15.10.2018
Сообщений: 73

Функция parseInt() разве не вычесляет цыфры из строк?
Ответить с цитированием
  #7 (permalink)  
Старый 07.01.2019, 16:20
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 10,641

Сообщение от 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() в каждую цепочку. Если же все, то ведь не обязательно, что число элементов двух массивов будет равно, да и вообще будет ли что-то возвращено. Если же возвращено, то нужно брать меньший массив, а из большего срез равный меньшему. Хотя бог его знает, чего вам надо.
Ответить с цитированием
  #8 (permalink)  
Старый 07.01.2019, 16:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 10,641

Сообщение от Hovik
parseInt() разве не вычесляет цыфры из строк?
Она вообще ничего не вычисляет, она преобразовывает строку в число если возможно. Если это является условием, то проверяйте это в фильтре.
Ответить с цитированием
  #9 (permalink)  
Старый 07.01.2019, 17:00
Аспирант
Отправить личное сообщение для Hovik Посмотреть профиль Найти все сообщения от Hovik
 
Регистрация: 15.10.2018
Сообщений: 73

Я извиняюсь, ошибка было моей. Я должен был сказать вам что это калькулятор и в span написание цену за единицу + руб. а в input каличество , результат будет записаться в div class blok1
Ответить с цитированием
  #10 (permalink)  
Старый 07.01.2019, 17:16
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 10,641

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

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

Последний раз редактировалось laimas, 07.01.2019 в 18:01.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обход многомерного массива с задержкой после каждого цикла Walk Общие вопросы Javascript 2 14.08.2017 16:17
Помогите к js коду, написать html код Modrih Элементы интерфейса 8 16.06.2015 18:08
Ввод диапазона значений массива с клавиатуры Воскобоенко Общие вопросы Javascript 11 06.06.2015 22:34
Суммировать все элементы массива в цикле. Blondinka Элементы интерфейса 6 27.05.2015 13:24
Сортировка массива по возрастанию другого массива. vas88811 Events/DOM/Window 4 12.01.2014 08:31