Javascript Math Функции - PullRequest
       5

Javascript Math Функции

3 голосов
/ 17 января 2011

Как я могу использовать эти JavaScript математические функции ?

Например, я хочу вычислить квадрат всех <input> значений в форме, не отправляя форму.

Можете привести маленький пример? Спасибо.

Ответы [ 7 ]

7 голосов
/ 17 января 2011

JQuery не нуждается в поддержке математических функций, так как это аддонная библиотека для Javascript, вы все равно можете использовать Javascript в своем коде JQuery, поэтому вы все равно можете использовать все собственные математические функции.

Примеры:

Добавление

var x = 1;
var y = 2;
var lol = x+y;
alert(lol);

Вычитание

var x = 10;
var y = 1;
var lol = x-y;
alert(lol);

Редактировать: Теперь мы немного лучше поняли ваш вопрос ...

<input type="text" id="field1" value="16" />
<input type="text" id="field2" value="25" />
<input type="text" id="field3" value="36" />

var field1Value = document.getElementById("field1").value;
var field2Value = document.getElementById("field2").value;
var field3Value = document.getElementById("field3").value;

alert(Math.sqrt(field1Value ));
alert(Math.PI * field2Value);
alert(Math.sin(field3Value));
2 голосов
/ 17 января 2011

Вы можете воздействовать на каждый отдельный вход, используя each() (документы) петля.

Нажмите здесь, чтобы протестировать рабочий пример. (jsFiddle)

$('a.square').click(function() {
    $('#myform :text').each(function() {
        this.value *= this.value;
    });
});

$('a.square_root').click(function() {
    $('#myform :text').each(function() {
        this.value = Math.sqrt(this.value);
    });
});

При нажатии на любую ссылку он находит все text вводит в myform и перебирает их.

Внутри каждой функции this относится к текущему элементу input.

1 голос
/ 03 февраля 2018

Я тоже искал решение, и я увидел здесь много вопросов, которые не работают (даже этот), если кто-то интересуется, как я, вот мое рабочее решение:

$("#apport").keyup( 
function(){
var apport = parseFloat($("#apport").val());
var montant = parseFloat($("#montant-financer").val());
var moinmontant = parseFloat(montant) - parseFloat(apport);     
$("#montant-financer").val(moinmontant);    
}
);

Все селекторы идентификатора вводятся

1 голос
/ 17 января 2011

Было бы весьма полезно, если бы jQuery имел функцию reduce().

При работе со списками данных большинство функциональных языков и, в действительности, большинство традиционных языков в наши дни имеют методы, которые выполняют повторяющуюся функцию надвесь список, принимая каждый элемент по очереди и применяя к нему функцию.

Простейшим из них является map, который jQuery реализует для вас.Это берет список и применяет функцию к каждому элементу и возвращает список результатов, один результат на запись в списке.например.[1,2,3] -> (map x2) -> [2,4,6].

Иногда вам нужен общий или коллективный результат из списка, а не из списка отдельных отображений.Именно здесь начинается операция reduce (или fold). К сожалению, jQuery не имеет этот метод в стандартной комплектации, поэтому ниже приведен плагин для него.Функция reduce принимает значение аккумулятора и значение текущего элемента и возвращает модифицированный аккумулятор, который будет передан следующему вызову.например.[1,2,3,4] -> (reduce + [initial:0]) -> 10 = ( ( ( (0 + 1) + 2 ) + 3 ) + 4 ) или ([1,2,3,4] -> (reduce * [initial:1]) -> 24 = ( ( ( (1 * 1) * 2 ) * 3 ) * 4 ).

(function($) {
    $.reduce = function(arr, callback, initial) {
        var accumulator = initial || 0;

        $.each(arr, function(index, value) {
            accumulator = callback(accumulator, value, index);
        });

        return accumulator;
    }
})(jQuery);

Тогда вы можете использовать его следующим образом, чтобы получить сумму квадратов:

var answer = $.reduce($('input:text'), function(acc, elem) {
    var cVal = $(elem).val();
    return acc + cVal * cVal;
}, 0);
1 голос
/ 17 января 2011

JavaScript - это язык программирования, а не jQuery, который представляет собой библиотеку для программирования веб-приложений, написанную на JavaScript. Чтобы эффективно использовать jQuery, вам нужно знать JavaScript.

Тем не менее, можно использовать функциональность jQuery для простой работы с несколькими текстовыми полями одновременно:

// Set each single-line textbox's value to the square
// of its numeric value, if its value is in fact a number.
$('input:text').each(function() {
    var num = +this.value;
    if(!isNaN(num)) {
        this.value = num * num;    // or Math.pow(num, 2)
    }
});
0 голосов
/ 26 декабря 2012

Глядя на исходный вопрос, который был опубликован, в нем четко говорится, вычислить квадрат всех значений в форме, без отправки формы.

я думаю, что keyup будет лучшим решением.

$("input").keyup(function () {
  var value = $(this).val();
  var x=value*value;
  $("p").text(x);
}).keyup();

Нажмите здесь, чтобы проверить рабочий пример. http://jsfiddle.net/informativejavascript/Sfdsj/3/

Для более подробной информации посетите http://informativejavascript.blogspot.nl/

0 голосов
/ 17 января 2011

Используйте функцию jquery map для создания массива

$('input:text').map(function() {
  return this.value * this.value; // math calculation goes here
}).get();

См. живой пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...