jQuery считывает значения и выполняет вычисления

#javascript #jquery #html

#javascript #jquery ( jquery ) #HTML

Вопрос:

У меня есть таблица html с 3 строками, каждая строка содержит две <td> строки с полем ввода текста name="freq" , а вторая <td> пуста.

Я хочу прочитать все значения полей ввода и выполнить для них функцию вычисления, а затем установить результаты для каждого поля в пустом <td>

Я хочу сделать это в jQuery,

Спасибо за любую помощь.

Ответ №1:

Что-то вроде этого..

 $('input[name="freq"]').each(function(){
  var value = this.value; // extract the value from the input element
  var newValue = process(value); // process performs the calculations..

  $(this).closest('td').next().html(newValue); // find the following <td> element and set its contents to the result of the calculations..
});
 

Демонстрация на http://jsfiddle.net/gaby/bWFxQ /

Комментарии:

1. Я столкнулся с небольшой проблемой при вычислении, я установил значение полей для загрузки значения по умолчанию (15, 10, 20). В первый раз все рассчитано правильно, но когда я ввожу разные значения в поля, старые значения все еще находятся в памяти (сеанс), а новые значения умножаются на старые значения, я не понимаю, как это исправить.

2. @YaBasha, ты можешь показать свой код? возможно, вы неправильно инициализируете переменную..

3. @Ya Basha, не могли бы вы добавить соответствующий html, поскольку я не могу выполнять какие-либо тесты только с помощью javascript..

4. @gaby-aka-g-petrioli спасибо за вашу помощь, я понял, в чем проблема, а именно: я выполнял вычисления с максимальным и минимальным значением, и я инициализировал его с помощью document.ready, что означает, что он вычисляет max и min один раз в начале и всякий раз, когда яизменил значения частоты на те же значения max и min в памяти, решение: я переместил вычисление max и min внутри скрипта кнопки, поэтому при каждом нажатии кнопки он вычисляет max и min. Еще раз спасибо, чувак.

5. @Ya Basha, здорово.. рад, что вы разобрались с этим 🙂

Ответ №2:

Попробуйте с:

 $('#yourTable td[name="freq"] input').change(function(){
  var val = parseInt($(this).val());
  val = val * 3   4; //your calculation
  $(this).parent().next().text(val);
});
 

Комментарии:

1. возможно, вам придется использовать val = eval(val) 3 4;

2. Почему ? НЕ используйте eval . Действительно.

Ответ №3:

попробуйте это

 $('#table :input').change(function(){
  var val = $(this).val();
  val = eval(val) * 5; //your calculation
  $(this).parents('td:first').next().html(val);
});