我查看了之前的问题,但没有看到我能理解的答案(它们比我的更复杂)。
我使用旧手册和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" /> No
要回答关于变量的其他问题,它们来自用户操作的弹出窗口,脚本会添加弹出窗口中的值并准确地执行,直到我使用按钮添加是/否代码。
如果用户想要添加棱镜当前绘图(prism_cd),则单击是并将添加它,但正如我所说,只要代码在脚本中,它就会被添加。此时我没有设置任何按钮进行检查。
其余的脚本工作正常,因为我可以使用我移植它的电子表格进行测试。
我还有更多的事情需要解决,但它们大多基于这种类型的“if / else set a var”逻辑,所以一旦我开始工作,希望我应该好好去。
我非常感谢回复。
中号./
答案 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);