我度过了这段时间,工作而快乐。请注意,我正在对所添加的值进行编号(在JS中算强制转换吗?)。
var total = 0;
$.each($("input[blopp]:checked"), function(index, value) {
$("#Service")[0].value += +value.attributes["blopp"].value;
total += +value.attributes["blopp"].value;
});
$("#Service")[0].value = total;
Service控件是Razor生成的隐藏字段,该字段基于提供给ASP.NET视图的模型,其类型为int。(我怀疑它没有相关性,因为一旦出现在页面上,我们只有HTML、JS和CSS,但我以前错了。)
然后我开始做一种叫做思考的事情,但并不是很成功。行数变小,增加了可读性。然而,现在的结果不是和,而是值的串联,因为保持变量是一个字符串。
$.each($("input[blopp]:checked"), function(index, value) {
$("#Service")[0].value += +value.attributes["blopp"].value;
});
我的问题是一种简单的方法来键入(不是像在键上的中那样键入,而是像在中将某个类型强制为)接收变量,使其知道它是一个数字?
问题不是关于:
- 如何转换为字符串(这已经非常明显了)
- 如何在操作前对接收器进行编号,即a=(+a)+(+b)(优选a+=b语法)
- 如何将原型添加到字符串中(返回原始版本更简单)
- 可读性和过早优化(仅限于学术好奇心)有多大好处
- 如何避免污染全球范围(已经有IIFE围绕它)
要回答您想要的一个问题:
JavaScript不允许在操作中强制执行目标类型,因为任何东西都可以是弱类型语言中的任何类型(而不是像"轻轻敲击键":)中的弱类型。