如何让ParseINT与row.find()配合使用?代码运行异常求助
如何正确结合使用
parseInt()与row.find()? 嘿,我看到你在代码里对这两个方法的用法有点搞混啦,这就帮你梳理清楚问题所在,以及正确的写法~
你的核心问题是把parseInt()错误地放在了find()的参数里——find()是jQuery用来查找DOM元素的方法,它需要传入CSS选择器字符串(比如.qty),而不是直接传数值。正确的逻辑应该是:先找到目标输入框元素,再获取它的数值,最后用parseInt()把字符串转成整数。
先看看你原代码的问题点:
// 错误写法:find()里不能直接放parseInt的结果 var price2 = row2.find(parseInt($('.qty').val())) + row2.find(parseInt($('.qty2').val())) ;
下面是修正后的完整代码,每一步都加了注释说明:
function update_qty() { // 获取当前操作所在的行容器,确保只操作当前行的元素 var row2 = $(this).parents('.item-row'); // 1. 在当前行内找到.qty输入框,获取值后转成十进制整数 var qtyValue1 = parseInt(row2.find('.qty').val(), 10); // 2. 同样处理.qty2输入框 var qtyValue2 = parseInt(row2.find('.qty2').val(), 10); // 处理输入非数字的情况:如果parseInt返回NaN,就设为0避免计算出错 qtyValue1 = isNaN(qtyValue1) ? 0 : qtyValue1; qtyValue2 = isNaN(qtyValue2) ? 0 : qtyValue2; // 计算总和并保留两位小数 var total = roundNumber(qtyValue1 + qtyValue2, 2); // 这里可以补充把结果渲染回页面的代码,比如更新到某个显示元素里: // row2.find('.total-display').text(total); }
再给你划几个关键知识点:
row2.find('.qty'):一定要用当前行的容器row2来调用find,这样只会查找当前行内的.qty元素,不会误拿到其他行的输入值parseInt(值, 10):第二个参数10是指定十进制解析,避免输入以0开头时被当成八进制处理的坑- 处理NaN:如果用户输入的不是有效数字(比如空值、字母),
parseInt会返回NaN,这时候要转成0,不然加法运算会变成NaN,导致结果错误
内容的提问来源于stack exchange,提问作者Hassan Ezadeen Hassan
相关产品推荐
相关产品推荐

