2012-11-12 29 views
-1

一直尝试过去的几个小时,但似乎无法使其工作。使用jQuery .val()执行计算返回值

我需要计算总和的平方根。似乎存在一个javascript方法来使用Math.sqrt()计算此(http://www.w3schools.com/jsref/jsref_sqrt.asp)。我怎样才能使用这个方法来计算我的总和的平方根?您在两个输入字段填写并正常工作后,将显示总和..

DEMO或下面的代码:

$(document).ready(function(){ 
    $('#beers').keyup(calculate); 
    $('#ranking').keyup(calculate); 

function calculate(e) 
{ 
    $('p#sum').html($('#beers').val() * 5/$('#ranking').val() + 1); //calculation of the two fields 
     /*Math.sqrt()*/ //This is the function to calculate the square root 
} 
}); 
+0

通常,您会希望_call_函数。 – Shmiddty

+1

@Shmiddty他是。这是绑定到两个关键事件。 – Cecchi

+0

@Cecchi他叫'Math.sqrt'? Coulda骗了我。 – Shmiddty

回答

1

你需要做的是呼叫Math.sqrt通过传递所需的正方形数根源:http://jsfiddle.net/zLKgT/2/

$('#beers').keyup(calculate); 
$('#ranking').keyup(calculate); 

function calculate(e) { 
    var maths = $('#beers').val() * 5/$('#ranking').val() + 1; 
    $('p#sum').text(maths); 
    $('p#squareroot').text(Math.sqrt(maths)); 
}​ 

您不需要事先将任何内容转换为数字,因为您正在使用数字对象,并且不使用运算符(用于添加和连接)。 Javascript会自动将val转换为数字。

+0

感谢您的答复和澄清Schmiddty,非常有帮助。在你的例子中逗号后面有没有任何可能的方法将数字舍入为2位数?例如:$('p#squareroot')。text(Math.sqrt(maths.round(number).toFixed(2)));对不起,可能是一个愚蠢的问题,我对jQuery很新颖 – Yunowork

+0

@Yunowork这和jQuery没什么关系。这都是标准的JavaScript。但是,是的,'maths.toFixed(2)'和'Math.sqrt(数学).toFixed(2)'应该有效。但是,某些浏览器可能存在一些兼容性问题。 – Shmiddty

+0

一个常见的替代方法是这样的:'Math.round(numberToRound * 100)/ 100'将四舍五入到小数点后两位。你可以用10来表示一位小数,1000表示三位小数,等等。 – Shmiddty

0

培训相关例子,你的问题,将其转换为一个数字,用var“答案“你可以在HTML中使用jQuery或你喜欢

var numericFormat = new Number($('#beers').val() * 5/$('#ranking').val() + 1) 
var answer = Math.sqrt(numericFormat); 
+0

Javascript会自动将其转换为数字。 – Shmiddty

1

首先任何其他方式显示它您需要将其转换成一个数 因为.VAL()返回一个字符串,你在这里乘两个字符串..

使用parseInt()parseFloat(),以转换为数字第一..

var beers = parseInt($('#beers').val() , 10); 
var rankings = parseInt($('#ranking').val() , 10); 

var sqrt = Math.sqrt((beers * 5)/ (rankings + 1)) 

$('p#sum').html(sqrt); 

Check Fiddle

+1

没有必要。这些值在执行数学运算时会自动转换为数字。 – Shmiddty

+0

@Shmiddty ..好点..我只是想更清楚..这不是必需的,但我觉得这是一个更好的做法.. –