Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Работа и инпутами и цифрами в цикле (https://javascript.ru/forum/dom-window/58317-rabota-i-inputami-i-ciframi-v-cikle.html)

рони 17.09.2015 22:00

Эдди,
вы упорно хотите сменить колёса на ходу машины, не получится.
Цитата:

Сообщение от рони
5 строка стирает значение 4 строки - это нормально? то есть ошибок быть не может при вводе?

вам нужно хранить где-то цифру 10 а не перезаписывать её!!!

Эдди 17.09.2015 22:03

Если надо, могу сделать примеры на jquery, где при использовании класса действие выполняется многократно, если имеем дело с input, и где выполняется однократно (корректно), когда вместо инпута ставим <a>.

рони 17.09.2015 22:03

Эдди,
function servn(n) {
  var x = document.getElementById('serv_c' + n).innerHTML; //взяли число
  var y = document.getElementById('serv_n' + n).value;
  z = x * y;
  document.getElementById('serv_c' + n).innerHTML = z;//уничтожили при любом вводе
}

Эдди 17.09.2015 22:05

Цитата:

Сообщение от рони (Сообщение 389063)
Эдди,
вы упорно хотите сменить колёса на ходу машины, не получится.


вам нужно хранить где-то цифру 10 а не перезаписывать её!!!

Мне надо ее перезаписать.
Клиент смотрит. Сверяет цифры. Может 150 раз менять, смотреть результат.
Когда его все устраивает, он кликает на корзине и кладет в нее основные услуги вместе с дополнительными.
Да, и я решил не писать в БД, а в сессию сначала, до подтверждения, как и советовали.

рони 17.09.2015 22:06

Эдди,
сделайте хотя-бы так
<td id="serv_c0" data-num="10">10</td>
и берите число из dataset

Эдди 17.09.2015 22:07

Цитата:

Сообщение от рони (Сообщение 389065)
Эдди,
function servn(n) {
  var x = document.getElementById('serv_c' + n).innerHTML; //взяли число
  var y = document.getElementById('serv_n' + n).value;
  z = x * y;
  document.getElementById('serv_c' + n).innerHTML = z;//уничтожили при любом вводе
}

рони
Да. Уничтожил и заменил на новое число в зависимости от количества человек, которые воспользуются услугами.
Или я чего-то не понимаю? Но это то, что мне нужно.

рони 17.09.2015 22:07

Цитата:

Сообщение от Эдди
Может 150 раз менять, смотреть результат

не может после первого ввода будет что попало

рони 17.09.2015 22:08

Эдди,
как можно ввести количество и не потерять 10 при вашем коде

Эдди 17.09.2015 22:08

~~~УДАЛИЛ~~~

Эдди 17.09.2015 22:10

Цитата:

Сообщение от рони (Сообщение 389070)
Эдди,
как можно ввести количество и не потерять 10 при вашем коде

ДА. ВЫ ПРАВЫ!!! 100%
Блн, снова копать, искать инфу про dataset. :)

рони 17.09.2015 22:10

Цитата:

Сообщение от Эдди
когда без data-num работает именно как надо?

офигеть, дайте две!!!

рони 17.09.2015 22:11

Эдди,
:) ок

Эдди 17.09.2015 22:17

Спасибо.
А оставить на js в том же файле внизу, где все на jquery это нормально?
(извините за дебильные вопросы, я ведь в JS уже профессор. знаю аж 1,5%) :)

Эдди 18.09.2015 08:03

function servn(n) {
  //Получаем элемент
  var el = document.getElementById('serv_c' + n);
  //Получаем значение атрибута data
  var dat = el.getAttribute('data-num');
  //Берем вводимое значение
  var num = document.getElementById('serv_n' + n).value;
  //Умножаем
  var res = num * dat;
  //Присваиваем полученное значение ячейке таблицы
  document.getElementById('serv_c' + n).innerHTML = res;
}

рони 18.09.2015 08:10

Эдди,
function servn(n) {
  //Получаем элемент
  var el = document.getElementById('serv_c' + n);
  //Получаем значение атрибута data
  var dat = el.dataset.num;
  //Берем вводимое значение
  var num = +document.getElementById('serv_n' + n).value||0;
  //Умножаем
  var res = num * dat;
  //Присваиваем полученное значение ячейке таблицы
  el.innerHTML = res;
}

Эдди 18.09.2015 08:12

Спасибо

рони 18.09.2015 08:12

Цитата:

Сообщение от Эдди
А оставить на js в том же файле внизу, где все на jquery это нормально?

да

Эдди 18.09.2015 15:16

Благодарю рони за то, что научил пользоваться dataset.
Только у меня в одной ячейке стоит сумма на одного человека, а в соседней сумма, перемноженная на кол-во человек.
То есть первоначальная сумма остается неизменной.
Но я так замучался с этой простой проблемой и упростил ее до двух ячеек, что уже сам не понимал, что делаю..
По-любому я научился новому способу, который 100% пригодится.
Тема закрыта.
Спасибо еще раз!


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