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

javascript if语句语法(需要帮助),javascript,Javascript,我已经看了前面的问题,但没有看到我能理解的答案(它们都比我的复杂) 我正在使用旧手册和15年前使用脚本语言的经验引导一些javascript 通过修改一个教程文件,我有了这段代码,它工作得很好 var oemdc1 = parseInt(document.getElementById("vehicle_oem_draw").value); var oemdc2 = parseInt(document.getElementById("vehicle_added_draw").val

我已经看了前面的问题,但没有看到我能理解的答案(它们都比我的复杂)

我正在使用旧手册和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)。即使两个按钮都没有点击,我仍然会得到附加值

所以我想我需要一些大括号或圆括号之类的东西

我在文档顶部声明了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
计算中是否包括棱镜1.5 mA电流消耗?
对
不
为了回答关于VAR的另一个问题,它们来自用户操作的弹出窗口,脚本添加弹出窗口中的值,并准确地执行此操作,直到我使用按钮添加“是/否”代码

如果用户想要添加prism current draw(prism_cd),他们会单击yes(是),然后添加它,但正如我所说的,只要脚本中有代码,就会添加它。在这一点上,我没有任何一个按钮设置为检查

脚本的其余部分可以准确地工作,因为我可以使用从中移植的电子表格进行测试

我还有更多的事情要做,但它们大多基于这种类型的“if/else set a var”逻辑,所以一旦我能完成这项工作,我希望我能很好地去做

我非常感谢你的答复


我不确定你的问题是什么。但是,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;
}

我不确定你的问题是什么。但是,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;
}
看看这个问题:

仅通过执行以下操作无法获取多个关联单选按钮的值

document.getElementById(ID).value;
再看看这个问题,为什么不应该为多个HTML元素提供相同的id:

现在为您的问题提供一个可能的简单解决方案(根据第一个链接的解决方案):

您可以编写一个函数,返回两个单选按钮的值:

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;
}

编辑以回答新问题:

现在你的问题是:

var oemdc4 = parseInt(document.getElementById("prism_draw").value);
如果将1.5传递给parseInt()-函数,它将返回1

使用函数parseFloat()来获得预期结果

var oemdc4 = parseFloat(document.getElementById("prism_draw").value);
看看这个问题:

仅通过执行以下操作无法获取多个关联单选按钮的值

document.getElementById(ID).value;
再看看这个问题,为什么不应该为多个HTML元素提供相同的id:

现在为您的问题提供一个可能的简单解决方案(根据第一个链接的解决方案):

您可以编写一个函数,返回两个单选按钮的值:

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;
}

编辑以回答新问题:

现在你的问题是:

var oemdc4 = parseInt(document.getElementById("prism_draw").value);
如果将1.5传递给parseInt()-函数,它将返回1

使用函数parseFloat()来获得预期结果

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

prism\u cd
应该是什么?include\u prism\u draw是哪种类型的HTML元素?我不理解这个问题。你甚至有一个点击处理程序吗?不要在
else
前面加分号。PHPPglue和SashaP是怎么说的。请使用包含
…vehicle…
ID的HTML部分更新问题。什么是
prism\u cd
应该是什么?哪种类型的HTML元素是
include\u prism\u draw
?我不理解这个问题。你甚至有一个点击处理程序吗?不要在
else
前面加分号。PHPPglue和SashaP是怎么说的。请使用包含
…vehicle…
ID的HTML部分更新问题。我从@Adam添加了代码,无论按钮的状态如何,仍然可以获得prism_cd。(prism_cd是一个我设置为var的数字,它准确地显示出来,但即使我不需要它。)按钮代码如下。计算中可能存在一个简单的错误,包括棱镜1.5 mA电流消耗?是的,不,我添加了@Adam的代码,不管按钮的状态如何,我仍然会得到prism_cd。(prism_cd是一个我设置为var的数字,它准确地显示出来,但即使我不需要它。)按钮代码如下。计算中可能存在一个简单的错误,包括棱镜1.5 mA电流消耗?是不是