2016-01-04 28 views
0

我很少使用JavaScript,但偶爾會使用代碼片段來完成我網頁中的內容。我最近使用一些代碼來添加單選按鈕的值,下拉列表和文本框在一個單一的形式。當選擇和/或更改選項時,結果會更新底部的總數。但是,這適用於Chrome,但不適用於IE,Safari或FireFox。我非常有信心,我搞亂了函數updatesum()的計算。我覺得一定有一些簡單的東西,我錯過了。我甚至嘗試刪除除2個選項以外的所有內容,並將它們添加到一起,但仍然無法在IE,FF或Safari中運行。 這是該頁面的JavaScript代碼。麻煩在使用Javascript添加表單中的值 - 我的水平=新秀

Link to the page to check out

<script type="text/javascript"><!-- 
function CurrencyFormatted(amount) 
{ 
var i = parseFloat(amount); 
if(isNaN(i)) { i = 0.00; } 
var minus = ''; 
if(i < 0) { minus = '-'; } 
i = Math.abs(i); 
i = parseInt((i + .005) * 100); 
i = i/100; 
s = new String(i); 
if(s.indexOf('.') < 0) { s += '.00'; } 
if(s.indexOf('.') == (s.length - 2)) { s += '0'; } 
s = minus + s; 
return s; 
} 

function updatesum() { 
tot = 

(

(((document.form.sum1.value -0) + (document.form.sum2.value -0) +  (document.form.sum3.value -0) + (document.form.sum4.value -0) + (document.form.sum5.value -0) + (document.form.sum6.value -0) + (document.form.sum7.value -0) + (document.form.sum8.value -0) + (document.form.sum9.value -0) + (document.form.sum10.value -0) + (document.form.sum11.value -0) + (document.form.sum12.value -0)) - 
((document.form.sum1.value -0) + (document.form.sum2.value -0) + (document.form.sum3.value -0) + (document.form.sum4.value -0) + (document.form.sum5.value -0) + (document.form.sum6.value -0) + (document.form.sum7.value -0) + (document.form.sum8.value -0) + (document.form.sum9.value -0) + (document.form.sum10.value -0) + (document.form.sum11.value -0) + (document.form.sum12.value -0)) * ((document.form.sum15.value -0))) + 
(((document.form.sum1.value -0) + (document.form.sum2.value -0) + (document.form.sum3.value -0) + (document.form.sum4.value -0) + (document.form.sum5.value -0) + (document.form.sum6.value -0) + (document.form.sum7.value -0) + (document.form.sum8.value -0) + (document.form.sum9.value -0) + (document.form.sum10.value -0) + (document.form.sum12.value -0)) * ((document.form.sum13.value -0))) + ((document.form.sum14.value -0)) 

); 

document.form.sum.value = CurrencyFormatted(tot); 
} 
//--></script> 

回答

0

不能使用document.form.name.value獲得無線電檢測值。

試試這個:

function getOptionSelection(name) { 
    // define function to get value of checked radio button using the name 
    var fields = document.form[name]; 
    for (i = 0; i < fields.length; i++) { 
     if (fields[i].checked) { 
      return fields[i].value; 
     } 
    } 

    // return 0 if nothing was checked 
    return 0; 
} 

function updatesum() { 
    // define array to store values 
    var sums = [0]; 
    var i; 

    // get values from radio buttons 
    for (i = 1; i <= 10; i++) { 
     sums[i] = +getOptionSelection('sum' + i); // <<<<<< it's simpler to convert string to numeric using the + sign 
    } 

    // get values from text input and select drop down 
    for (i = 11; i <= 15; i++) { 
     sums[i] = +document.form['sum' + i].value; // <<<<<< it's simpler to convert string to numeric using the + sign 
    } 

    // simplify the code by adding the two summary parts 
    var part1 = sums[1] + sums[2] + sums[3] + sums[4] + sums[5] + sums[6] + sums[7] + sums[8] + sums[9] + sums[10] + sums[11] + sums[12]; 
    var part2 = sums[1] + sums[2] + sums[3] + sums[4] + sums[5] + sums[6] + sums[7] + sums[8] + sums[9] + sums[10] + sums[12]; 
    var tot = (part1 - part1 * sums[15]) + (part2 * sums[13]) + sums[14]; 

    document.form.sum.value = CurrencyFormatted(tot); 
} 

我注意到,你使用-0將值轉換從字符串到數字。只需在變量前面加一個+符號就簡單多了。

所以:

var x = '5'; 
var y = x - 0; // <<<< y = 5 
var z = +x; // <<<< z equals 5 

確保有+號和變量名之間沒有空格。

+0

Holy Crap!謝謝你!!!!!你是個天才!!!!!! – Jason

+0

我想問你另一個問題。我怎樣才能在currencyFormatted數字中添加一個逗號?目前,這個數字中沒有一個。 – Jason

+0

試試這個函數:toLocaleString() – Will