2013-04-15 62 views
-1

我想計算除P & P.之外的所有CD的總數。我正在使用的代碼總計是NaN?在計算中獲得NaN

這裏很困惑。我究竟做錯了什麼?

function calculateTotal() { 
    var Collection method = document.getElementById('collection').value + 
    var select CDs = document.getElementById('selectCD').value; 
    var total = document.getElementById('total'); 
    total.value = 'collection'(total) + 'selectCD'(total); 
} 

Here is a JSFiddle與完整的代碼。

+7

我建議你看看你的錯誤控制檯:你的代碼有幾個語法錯誤。 –

+0

您已添加+而不是; NetStarter

+0

這段代碼有很多***的語法錯誤!首先,變量名*不能包含空格。另外,你的第一行有一個尾隨的'+'。 –

回答

1

在你的小提琴collectionselectCD是divs(而不是inputfields)包含 inputfields。你不能做divElm.value

然後,你的小提琴中的php代碼通常能夠輸出多一個CD,所以你需要添加所選CD的總數。

獲得所需的最低變化代碼的工作是:

function calculateTotal(){ 
    var coll = document.getElementsByName('deliveryType'), 
     cds = document.getElementsByName('cd[]'), 
     cdTot = 0, 
      L = coll.length; 
    while(L--){if(coll[L].checked){ //get shipping costs 
     coll=Number(coll[L].getAttribute('title')); break; 
    }   } 
    L=cds.length; 
    while(L--){if(cds[L].checked){ //add total prices 
     cdTot += Number(cds[L].getAttribute('title')); 
    }   } 
    // output total 
    document.getElementById('total').value = coll + cdTot; 
} 

而且你要設置一些觸發器起作用calculateTotal(從運費和選擇的CD的,這樣一來,如果他們改變,總場將更新爲)。
看到根據您的提琴,以便您能激勵行動中看到它(計算)這個working fiddle這些變化(與一些其他修正)。

但我確實希望這是針對學校問題,而不是針對現場網上商店。我會重新考慮我的策略,因爲我認爲你目前正在通向一個巨大的安全漏洞。

祝你好運!

+0

我更喜歡使用'parseInt' /'parseFloat'而不是'Number()'。如果字符串不是有效的數字,則Number()將給出'NaN',而'parseInt'將嘗試解析它。 'parseInt('123abc',10)'是'123',但是Number('123abc')'是'NaN'。 –

+1

@RocketHazmat:事實上,這正是浮游你的船所需要的。我也喜歡把'+'放在字符串前,或者把字符串乘以1或..有這麼多的方法:http://jsperf.com/convert-string-to-number-techniques/2 – GitaarLAB

+0

@GitaarLAB謝謝爲了您的迴應。由於某種原因您提供的解決方案在我的代碼中仍然不起作用。也許如果我提供你可以幫助的整個代碼?親切的問候 –