2016-06-10 241 views
0

我已經瀏覽了前面的問題,但沒有看到我能理解的答案(它們都比我的更復雜)。javascript if語句語法(需要幫助)

我使用舊手冊和15年前使用腳本語言的經驗引導了一些JavaScript。

通過修改教程文件,我有這樣的代碼,它工作正常

var oemdc1 = parseInt(document.getElementById("vehicle_oem_draw").value);   
var oemdc2 = parseInt(document.getElementById("vehicle_added_draw").value); 
var oemdc3 = parseInt(document.getElementById("new_vehicle_draw").value); 
var oemdc4 = parseInt(document.getElementById("include_prism_draw").value); 
var total_current_draw = document.getElementById("total_hourly_current_draw"); 
total_current_draw.value = oemdc1 + oemdc2 + oemdc3 

但我需要添加此代碼,這樣,如果用戶點擊一個單選按鈕(include_prism_draw),他們得到不同的總。

if (oemdc4 == 1) 
total_current_draw.value = oemdc1 + oemdc2 + oemdc3 + prism_cd; 
else 
total_current_draw.value = oemdc1 + oemdc2 + oemdc3; 

但是我在計算得到的附加值(prism_cd),而不管對應的單選按鈕的值(「1」或「0」)的。即使沒有按鈕被點擊,我仍然可以獲得增值。

所以我想我需要一些大括號或括號。

我在文檔的頂部聲明瞭var prism_cd並插入結果字段,以便它在這個意義上的工作。

任何幫助,非常感謝。

(好的,找到了編輯鏈接,他們應該讓它更突出)。從@Adam

我剪切/粘貼代碼,並仍然得到prism_cd無論按鈕的狀態。 (prism_cd是多少我設置爲VAR和它準確地顯示出來,但即使我不希望它。)

按鈕的代碼如下。也許有一個簡單的錯誤

Include PRISM 1.5 mA current draw in calculation? 
<input type="radio" name="include_prism_draw" id="include_prism_draw" value="1" /> Yes 
<input type="radio" name="include_prism_draw" id="include_prism_draw" value="0" /> &nbsp;&nbsp;&nbsp;No 

回答有關瓦爾的其他問題,他們從彈出窗口的用戶操作,腳本從彈出窗口增加值等準確地做,直到我添加的是/否代碼與按鈕。

如果用戶想要添加的棱鏡電流消耗(prism_cd)他們點擊是,它是要添加,但正如我說,這是獲取添加每當代碼是腳本中。此時我沒有設置任何按鈕被檢查。

腳本的其餘部分工作正常,因爲我可以使用電子表格進行測試,並將其移植到其中。

我還有更多的事情有待完善,但它們大多是基於這種類型的「if/else語句設置一個VAR」邏輯所以一旦我得到這個工作,希望我應該是好去。

我非常感謝答覆。

M./

+0

'prism_cd'應該是什麼? – PHPglue

+2

哪種類型的HTML元素是'include_prism_draw'? – SaschaP

+4

我不明白這個問題。你甚至有一個點擊處理程序? – user3791775

回答

2

我不確定你的問題是什麼。但是,if..else語法的最佳實踐是將兩個塊放在大括號中。

var oemdc1 = parseInt(document.getElementById("vehicle_oem_draw").value);   
var oemdc2 = parseInt(document.getElementById("vehicle_added_draw").value); 
var oemdc3 = parseInt(document.getElementById("new_vehicle_draw").value); 
var oemdc4 = parseInt(document.getElementById("include_prism_draw").value); 
var total_current_draw = document.getElementById("total_hourly_current_draw"); 
if (oemdc4 === 1){ 
    total_current_draw.value = oemdc1 + oemdc2 + oemdc3 + prism_cd; 
} else { 
    total_current_draw.value = oemdc1 + oemdc2 + oemdc3; 
} 
+0

我從@Adam添加了代碼,並且無論按鈕的狀態如何,仍然可以獲得prism_cd。 (prism_cd是一個我設置爲var的數字,它準確顯示,但即​​使我不需要它。)按鈕代碼如下。也許有一個簡單的錯誤包括計算PRISM 1.5毫安電流?​​      是                否 – WyattsDad

0

看這個問題:Get Radio Button Value with Javascript

你不能只是做

document.getElementById(ID).value; 

得到了一些相關的單選按鈕的值也看這個問題,爲什麼你不應該將相同的ID提供給多個HTML元素:Why is it a bad thing to have multiple HTML elements with the same id attribute?

現在爲您提供一種可能的簡單解決方案問題(根據來自第一鏈路解決方案):

你可以寫一個函數,返回你的兩個單選按鈕的值:

function getPrismDrawValue() 
{ 
    // predefined result, if no radio button is checked. 
    // in this case result will be 0 -> "No" 
    var result = 0; 

    // get a list of all HTML-elements with the name 'include_prism_draw' 
    var radios = document.getElementsByName('include_prism_draw'); 
    // loop through all this elements and check if one of them is checked 
    for (var i = 0; i < radios.length; i++) 
    { 
     if (radios[i].checked) 
     { 
      // get the value of the checked radio button 
      result = parseInt(radios[i].value); 

      // only one radio can be logically checked, don't check the rest 
      break; 
     } 
    } 

    return result; 
} 

現在你的變量oemdc4應該聲明如下:

var oemdc4 = getPrismDrawValue(); 

編輯回答新問題:

現在你的問題是在這裏:

var oemdc4 = parseInt(document.getElementById("prism_draw").value); 
如果你通過1.5〜parseInt函數

() - 函數將返回1.

使用功能parseFloat(),而不是讓你期望的結果。

​​