我遇到包含以下行的脚本的问题(top现在已注释掉)。它们处于循环中以对表单上的文本框进行求和。但是,我得到:' Uncaught TypeError:无法读取属性' 0'未定义的'什么时候运行。如果我注释掉底线并取消注释顶线,它可以正常工作。
我仍然希望保留替换功能,但我不知道如何解决这个问题。
total += $(this).text();
//difference and why the previous works, but the below returns null, but if
total += ($(this).all[0].value.replace(/\D/g, '')) * 1
编辑:应该提到这是我需要调试并发现此错误的内容。
答案 0 :(得分:1)
.text()
获取或设置元素内的文本。
例如:<p>Hello World</p>
console.log($('p').text())
将返回Hello World
.value()
不是jquery方法,而是使用.val()
.val()
用于获取或设置输入字段的值。
例如<input type="text">
如果您想获取或设置输入值,例如表单提交,您可以使用$('input').val()
答案 1 :(得分:0)
1。 .text
不作为文本框的属性存在。要检索其值,请使用val()
(请参阅2)
2。您正在将vanilla JS与您的JQuery混合使用。 .value
应为.val()
。
3。你想用.all
尝试什么...?这是您的错误所指的 null 。
4. 我认为这可能是你想要的:
var total = 0;
$('input[type="text"]').each(function() {
total += ($(this).val().replace(/\D/g, '')) * 1
});
alert("Your total is " + total);
示例:JSFiddle