经过一些计算后对输入字段求和
Sum up input fields after some calulations
嗨,我正在编写一个函数来汇总输入区域的值,它应该动态更改值。因此,当有人添加新值时,总值应该会自动更改。
这是HTML代码:
<input id="fenster" onkeyup="val()" type="number">
<input id="fassade" onkeyup="val()" type="number">
<input id="keller" onkeyup="val()" type="number">
这是JS:
function id(id){return document.getElementById(id);}
var val1 = 0;
var val2 = 0;
var val3 = 0;
function val(){
val1 = parseInt(id("fenster").value);
val2 = parseInt(id("fassade").value);
val3 = parseInt(id("keller").value);
val_fenster = val1 * 30;
val_fassade = val2 * 30;
val_keller = val3 * 10;
id("total").innerHTML = ((val_fenster > 0 && val_fassade > 0 && val_keller > 0))? val_fenster + val_fassade + val_keller: val_fenster;
}
仅当包含所有三个值时,该函数才会更新。但是,如果它在每个值之后更新,并且如果不输入第一个值,那就太好了。
仅当包含所有三个值时,该函数才会更新。
大概您的>0
检查是为了处理有空白输入的情况,因为它们将解析为NaN
和任何+ NaN == NaN
。因此,最好的方法可能是在您的parseInt
返回NaN
时替换0
。这可以很容易地完成,如下所示:
val1 = parseInt(id("fenster").value) || 0;
现在,如果parseInt
给出NaN
,这是假的,您将分配0
。
另请注意,您应该指定parseInt
的基数:
val1 = parseInt(id("fenster").value, 10) || 0;
因为前导零会导致它认为它是八进制的。
此外,为您的输入分配一个类,然后一次获取所有输入并循环访问它们可能会更容易。
我想,您可以按如下方式重写函数,我已将 onkeyup
方法替换为 onblur
仅在焦点移出输入框而不是在任何键控上时才触发事件。
网页代码:
<input id="fenster" onblur="val()" type="number">
<input id="fassade" onblur="val()" type="number">
<input id="keller" onblur="val()" type="number">
<div id="total"></div>
JS代码:
function id(id){
return document.getElementById(id);
}
function val(){
var val1 = parseInt(id("fenster").value) || 0,
val2 = parseInt(id("fassade").value) || 0,
val3 = parseInt(id("keller").value) || 0;
console.log(val1, val2, val3);
var val_fenster = val1 * 30,
val_fassade = val2 * 30,
val_keller = val3 * 10;
id("total").innerHTML = val_fenster + val_fassade + val_keller;
}
希望这有帮助!
试试这个
function id(id){return document.getElementById(id);}
var val1 = 0;
var val2 = 0;
var val3 = 0;
function val(){
val1 = parseInt(id("fenster").value);
val2 = parseInt(id("fassade").value);
val3 = parseInt(id("keller").value);
if(!val1)
val1=0;
if(!val2)
val2=0;
if(!val3)
val3=0;
val_fenster = val1 * 30;
val_fassade = val2 * 30;
val_keller = val3 * 10;
id("total").innerHTML = ((val_fenster >= 0 && val_fassade >= 0 && val_keller >= 0))? val_fenster + val_fassade + val_keller: val_fenster;
}
它将毫无问题地工作
你也可以使用它
id("total").innerHTML = (isNaN(val_fenster) && isNaN(val_fassade) && isNaN(val_keller))? (val_fenster + val_fassade + val_keller): val_fenster;
相关文章:
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 而循环只设置php中输入字段中的第一个值
- 在输入字段中将最小金额设置为
- 如何在输入字段中的按钮的帮助下打开日历,该字段的类型为“=”;日期”;
- 如何在HTML输入字段中添加不可删除的后缀
- 互斥单选按钮和相应的输入字段
- 在IE9中的输入字段中输入焦点最近按钮
- 选中单选框时将属性添加到输入字段
- 当设置addFromAutocompleteOnly时,剩余文本将保留在输入字段中
- 我如何在数字插入中使用逗号,这样它就不会'不要破坏我的输入字段
- 在输入字段上有两个函数调用,一个在Blur上,一个不在Angular中
- 输入字段将't获取更新的值
- 如何选择多个输入字段并删除所需的属性
- 输入字段,只接受0到12之间的数字
- 单击鼠标,用MySQL数据填充html表单输入字段
- 使用jquery将输入字段转换为文本
- Model中的Typeahead返回空值以形成输入字段
- 如何从查询字符串中的输入字段发回文本
- 如何验证日期、月份和日期的3个独立输入字段;年使用jquery或javascript
- 将值传递给jquery创建的输入字段