Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите объединить две функции в одну 
:(
    Опции темы
varahi
Дата 31.5.2016, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 31.5.2016

Репутация: нет
Всего: нет



Люди добрые, помогите мне объединить две нижеследующие функции в одну. Собственно весь смысл в том, что в одной форме, чекбоксы с классом type1 должны вычисляться одним арифметически действием. А с классом type2 - немного по другому. Думаю, понятно по коду.

Код

function calc() {
      var arr = document.querySelectorAll('input[type="checkbox"].type1:checked');
      var total = 0;
      for (var i = 0; i < arr.length; i++) {
        total += parseInt(arr[i].name);
      }
      document.querySelector('#result').textContent = total * 2 * (parseInt(document.querySelector('.length').value) + parseInt(document.querySelector('.width').value));
    }

Код


function calc() {
      var arr = document.querySelectorAll('input[type="checkbox"].type2:checked');
      var total = 0;
      for (var i = 0; i < arr.length; i++) {
        total += parseInt(arr[i].name);
      }
      document.querySelector('#result').textContent = total * (parseInt(document.querySelector('.length').value) + parseInt(document.querySelector('.width').value));
    } 

PM MAIL   Вверх
ksnk
Дата 31.5.2016, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Что значит - объединить?
Можно вот так
Код

function calc(type,k) {
      var arr = document.querySelectorAll('input[type="checkbox"].'+(type||'type1')+':checked');
      var total = 0;
      for (var i = 0; i < arr.length; i++) {
        total += parseInt(arr[i].name);
      }
      document.querySelector('#result').textContent = total * (k||1) * (parseInt(document.querySelector('.length').value) + parseInt(document.querySelector('.width').value));
    }


вызвать - calc()- первая функция
calc('type2',2) - вторая.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
varahi
Дата 31.5.2016, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 31.5.2016

Репутация: нет
Всего: нет



Вот в чем суть. В форме нужно высчитать цену. По такой формуле ((4+6)*2*20) + (4*6*35)=
Если товар имеет тип мп, то я ему даю класс для чекбокса type1 и высчитываю по функции, что ниже. Т.е. ((4+6)*2*20)
А для типов m2, нужно считать вот так (4*6*35). Т.е. не умножать на 2. Надеюсь как-то внятно объяснил. 

Код

function calc() {
      var arr = document.querySelectorAll('input[type="checkbox"].type1:checked');
      var total = 0;
      for (var i = 0; i < arr.length; i++) {
        total += parseInt(arr[i].name);
      }
      document.querySelector('#result').textContent = total * 2 * (parseInt(document.querySelector('.length').value) + parseInt(document.querySelector('.width').value));
    }


Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  001.jpg 90,65 Kb
PM MAIL   Вверх
varahi
Дата 31.5.2016, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 31.5.2016

Репутация: нет
Всего: нет



В общем чекбокксы с классами type2 нужно вычислять так total * (parseInt(document.querySelector('.length').value) + parseInt(document.querySelector('.width').value));
И всё это в одной форме. Как это сделать?
PM MAIL   Вверх
ksnk
Дата 31.5.2016, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Код

function hasClass(element, selector) {
    return  ( (" " + element.className + " ").replace(/[\n\t]/g, " ").indexOf(" " + selector + " ") > -1 );
}

function calc() {
    var arr = document.querySelectorAll('input[type="checkbox"]:checked'),
        width = parseInt(document.querySelector('.width').value),
        height = parseInt(document.querySelector('.length').value),
        total = 0;

    for (var i = 0; i < arr.length; i++) {
        if (hasClass(arr[i], 'type1')) {
            total += 2 * (width + height);
        } else if (hasClass(arr[i], 'type2')) {
            total += width * height;
        }
    }
    document.querySelector('#result').textContent = total;
}




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0519 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.