2016-06-10 147 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(),而不是让你期望的结果。

​​