javascript if语句语法(需要帮助)

时间:2016-06-10 23:17:27

标签: javascript

我查看了之前的问题,但没有看到我能理解的答案(它们比我的更复杂)。

我使用旧手册和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;

但无论单选按钮值(“1”或“0”)如何,我在计算中都会得到附加值(prism_cd)。即使没有点击任何按钮,我仍然可以获得附加价值。

所以我觉得我需要一些大括号或括号或其他东西。

我在doc的顶部声明了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 set a var”逻辑,所以一旦我开始工作,希望我应该好好去。

我非常感谢回复。

中号./

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

看看这个问题:Get Radio Button Value with Javascript

只需执行

,就无法获得许多相关单选按钮的值
document.getElementById(ID).value;

还要看看这个问题,为什么你不应该为多个HTML元素提供相同的id: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()来获得预期的结果。

var oemdc4 = parseFloat(document.getElementById("prism_draw").value);