Javascript val()返回逗号分隔的未定义值
我试图减去2列,得到第3列的值。我有下面的代码,只要输入框中没有逗号分隔的值,它就可以工作Javascript val()返回逗号分隔的未定义值,javascript,jquery,Javascript,Jquery,我试图减去2列,得到第3列的值。我有下面的代码,只要输入框中没有逗号分隔的值,它就可以工作 const sum=$inputs=>$inputs.get().reduce((a,el)=>a+(parseInt(el.value,10)| | 0),0); 函数calcTableBox(){ const$table=$(“#TableBox”); const$row=$table.find('>div'); $row.each(函数(){ const$this=$(this); const l
const sum=$inputs=>$inputs.get().reduce((a,el)=>a+(parseInt(el.value,10)| | 0),0);
函数calcTableBox(){
const$table=$(“#TableBox”);
const$row=$table.find('>div');
$row.each(函数(){
const$this=$(this);
const limiter=parseInt($this.find('.limiter').val(),10);//以十进制为基数的parseInt
const used=parseInt($this.find('.used').val(),10);
剩余常数=限制器-已使用;
如果(!isNaN(剩余))$this.find('.remaining').val(剩余);
});
$table.find('.totalimiter').val(sum($table.find('.limiter'));
$table.find('.totalused').val(sum($table.find('.used'));
$table.find('.totalrem').val(sum($table.find('.remaining'));
}
jQuery($=>{//DOM就绪
$(.limiter,.used”)。打开(“输入”,calcTableBox);
calcTableBox();//初始化
});
函数add逗号(值){
var v=values.value&&parseFloat(values.value.replace(/,/g',);
values.value=v.tolocalesting(“美国”);
}
.TableBox{
显示:表格;
边界间距:6px;
}
.TableBox输入[类型=文本]{
最大宽度:80px;
}
.TableBox>div{
显示:表格行;
边框间距:5px
}
.TableBox>div>div{
显示:表格单元格;
保证金:4倍;
}
[只读]{
颜色:#aaa;
}
限制器
使用
剩下的
总周期:
总结评论
你有几个同时发生的问题,它们合谋破坏你的代码。您需要注意错误消息并理解代码为何会中断,但到目前为止,以下是显而易见的:
.length()
)(您已经编辑了这个问题,但这是在原始帖子中)const
变量,这是不允许的.val()
的undefined
,因为.find(.limiter”)
没有返回任何元素,这导致limiter.replace
抛出错误,因为undefined
值没有replace
函数jQuerythis
变量没有定义。我相信您的意思是$this
,但您需要先修复它,然后代码才能正常工作$row.each(函数(){
const$this=$(this),
$limiter=$this.find('.limiter'),
$used=$this.find(“.used”);
//如果缺少限制器或使用过的元素,则不处理此行:
if($limiter.length==0 | |$used.length==0)返回;
//您可能需要添加其他检查以确保
//$limiter.val()返回一个字符串,但我假设
//HTML,只要
//元素被发现。
const limiterValue=$limiter.val()。替换(/,/g,”);
limiterInt=parseInt(limiterValue);
const usedValue=$used.val().replace(/,/g,“”);
usedInt=parseInt(usedValue);
//如果limiterInt或usedInt为NaN,则跳过此行。
//这些数字无效。
//或者你会想用另一种方式来处理这件事……那是真的
//由你决定。
if(isNan(limiterInt)| | isNan(usedInt))返回;
剩余常数=限制器-使用量;
$this.find('.remaining').val(remaining);
});
总结评论
你有几个同时发生的问题,它们合谋破坏你的代码。您需要注意错误消息并理解代码为何会中断,但到目前为止,以下是显而易见的:
.length()
)(您已经编辑了这个问题,但这是在原始帖子中)const
变量,这是不允许的.val()
的undefined
,因为.find(.limiter”)
没有返回任何元素,这导致limiter.replace
抛出错误,因为undefined
值没有replace
函数jQuerythis
变量没有定义。我相信您的意思是$this
,但您需要先修复它,然后代码才能正常工作$row.each(函数(){
const$this=$(this),
$limiter=$this.find('.limiter'),
$used=$this.find(“.used”);
//如果缺少限制器或使用过的元素,则不处理此行:
if($limiter.length==0 | |$used.length==0)返回;
//您可能需要添加其他检查以确保
//$limiter.val()返回一个字符串,但我假设
//HTML,只要
//元素被发现。
const limiterValue=$limiter.val()。替换(/,/g,”);
limiterInt=parseInt(limiterValue);
const usedValue=$used.val().replace(/,/g,“”);
usedInt=parseInt(usedValue);
//如果limiterInt或usedInt为NaN,则跳过此行。
//这些数字无效。
//或者你会想用另一种方式来处理这件事……那是真的
//由你决定。
如果(isNan(限制)| | isNan(使用))