现代javascript中输入类型number的两个值之和
我从输入类型编号中得到两个值,但结果显示不好现代javascript中输入类型number的两个值之和,javascript,input,Javascript,Input,我从输入类型编号中得到两个值,但结果显示不好 const price = document.querySelector(".price").value; const items = document.querySelector(".items").value; const a = price + items; const subtotal = document.querySelector(".total"); subtotal.addEventListener('click', function
const price = document.querySelector(".price").value;
const items = document.querySelector(".items").value;
const a = price + items;
const subtotal = document.querySelector(".total");
subtotal.addEventListener('click', function(){
console.log(a);
});
您获得不可靠输出的原因有两个:
'5'+'2'='52'
const subtotal=document.getElementById(“总计”)
小计.addEventListener('click',函数(){
常量价格=+document.getElementById(“价格”).value,
items=+document.getElementById(“items”).value,
a=价格+项目
控制台日志(a)
});代码>
添加
尽管控件的类型为数字,但实际输入的类型为字符串。因此,字符串串联(即,'2'+'3'='23'
)正在发生。在执行加法之前,必须将值转换为数字。要从控件中获取当前值,还必须访问函数中的值:
const subtotal=document.querySelector(“.total”);
小计.addEventListener('click',函数(){
const price=document.querySelector(“.price”).value;
const items=document.querySelector(“.items”).value;
console.log(价格类型);//字符串
常数a=数量(价格)+数量(项目);
控制台日志(a);
});代码>
Total
您必须在事件侦听器中执行所有这些逻辑,以便即使输入值发生更改,也可以读取它们,并根据当前输入值计算结果
为sum声明一个函数也很好,这样您就可以在任何需要的地方重用它
函数和(a,b){
返回编号(a)+返回编号(b);
}
const btn=document.querySelector(“.btn”);
btn.addEventListener('click',function(){
const price=document.querySelector(“.price”).value;
const items=document.querySelector(“.items”).value;
document.querySelector(“.total”).innerText=总和(价格、项目);
});代码>
总和
常数a=数量(价格)+数量(项目)代码>html是什么样子,你输入的是什么数字?另外,最终记录的输出是什么?您知道您是在页面加载时读取值,而不是在单击页面时读取值。点击上方的代码不会神奇地更新。这应该很容易放入可运行的代码片段中,以演示问题。您愿意这样做吗?“但结果显示不好”请详细说明问题并向我们显示您遇到的任何错误querySelector()
将返回第一个匹配的元素,document.querySelector(.price”).value
@Mamun是的,您是对的,我忘了这一点,但是使用ID是更好的做法,因为您的代码不能正常工作。此外,我认为不需要求和函数。写sum(4,3)
比写4+3
需要更多的字符。谢谢@Kobe有个bug。关于函数,我并没有试图用尽可能少的字符来解决问题,而是尽可能地使它成为最好的。如何使用求和函数比通常写出来更好呢?我在回答中已经说过,函数可以在代码中稍后重用。我正在考虑一个比问题中显示的场景更广阔的场景,这可能是事实。