$ this.text和$ this.value之间的区别以及为什么1返回空值?

时间:2016-10-14 17:13:39

标签: javascript jquery

我遇到包含以下行的脚本的问题(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

编辑:应该提到这是我需要调试并发现此错误的内容。

2 个答案:

答案 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