2013-05-01 62 views
1

解決jQuery二次方程的代碼有什麼問題?jQuery二次方程

a = parseFloat($('#a').val()); 
b = parseFloat($('#b').val()); 
c = parseFloat($('#c').val()); 
root = Math.sqrt(Math.pow(b, 2) - (4 * a * c)); 
x1 = (-b + root)/2 * a; 
x2 = (-b - root)/2 * a; 

function validateForm(){ 
      $('#result1').fadeIn('slow'); 
      $('#result2').fadeIn('slow'); 
      $('#result1').html('First ans equal' + x1); 
      $('#result2').html('Second ans equal' + x2); 
} 

也許它的根,還是POW?請幫我弄清楚這一點,請

+0

作爲一個說明,你可以結合你的'.fadeIn()'方法合併爲一個語句:'$('#result1,#result2')。fadeIn('slow');'。 JavaScript控制檯給你什麼錯誤? – 2013-05-01 08:20:04

+0

這段代碼運行時會發生什麼?你有錯誤嗎?你能提供一個使用jsfiddle的例子嗎? – 97ldave 2013-05-01 08:23:34

+0

我得到這個代碼的'不是數字'(NaN)。你看到一樣嗎? – WheretheresaWill 2013-05-01 08:29:35

回答

1

其簡單的數學。 jQuery/Javascript在這方面貢獻很少。

爲jQuery的/ JavaScript部分:

確保#a, #b,#c有值當您運行的代碼。即

$('#a').val() = some valid Float text 

一件事,你可以在這方面做的是包裝你的變量a,b,c一個函數內部。

並在某些按鈕點擊或僅在您確定#a,#b, #c有價值後才調用該功能。

見下圖:

var x1,x2; 
function calculate(){ 

    a = parseFloat($('#a').val()); 
    b = parseFloat($('#b').val()); 
    c = parseFloat($('#c').val()); 

    root = Math.sqrt(Math.pow(b, 2) - (4 * a * c)); 

    x1 = (-b + root)/2 * a; 
    x2 = (-b - root)/2 * a; 
} 

$('#validate').on("click",function(){ 
    calculate(); 
    $('.result').html('').append('first answer'+x1).append('second answer'+x2); 
}); 

數學部分

只要您的二次方程具有合理的根,它就會正常工作。即如果你給你的
coefficients(a,b,c)一個值,你的二次方程沒有合理的根,在這種情況下,你會得到NaN在你的X1和X2,因爲你得到的結果不是實數,而是一個複數。

所以每次Math.pow(b, 2) - (4 * a * c) < 0,你不會得到任何真正的根源,即你會得到NaN的內部X1和X2

看到這個fiddle