val() 如何返回数字?

IT技术 javascript jquery string numbers
2021-02-25 01:44:41

val文档中写了这个描述:

.val() 返回:字符串、数字、数组

我试图得到一个Number,但它似乎string返回,我做错了什么吗?

$('#gdoron').val('1');

alert($('#gdoron').val() === '1'); // true 
alert(typeof $('#gdoron').val());  // string.

$('#gdoron').val(1);

alert($('#gdoron').val() === 1);  // false
alert(typeof $('#gdoron').val()); // string (not "number"!)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="gdoron" />

我的问题是:如何val()像文档所说的那样返回数字?问题不在于我如何解析字符串。

5个回答

文本输入的value属性将始终返回一个字符串。你需要parseInt得到一个整数的值:

parseInt($('#myInput').val(), 10);
使用一元运算符-+~之前的$也将返回一个数字+$('#gdoron').val();
2021-05-01 01:44:41
我知道,我问的是如何val像文档所说的那样返回数字,而不是我如何解析字符串。
2021-05-04 01:44:41

一些 HTML5 元素,例如进度;

console.log(typeof $("#prog").val()); // number 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<progress value="50" max="100" id="prog"></progress>

@gdoron:它说: [...] 表单元素,例如 input,selecttextarea[...]现在,我的母语不是英语,但在我看来,这并不是一个详尽的清单。
2021-04-25 01:44:41
另请参阅HTML5 草稿(返回值为double)。
2021-05-11 01:44:41
奇怪的东西:alert($("#prog").val() === 50​)​;​​​​​​​​​​//false​​alert($("#prog").val() === '50')​; //false​​​​​​​​​​​​如何?
2021-05-13 01:44:41

我已经快速浏览了一下,我想我有一个答案。如果查看该val函数的实现,您会发现如果存在所谓的 val-hook,如果 val-hook 返回一个数字,则该数字将从 val 函数中原样返回。我发现这个讨论表明插件主要使用 val-hooks 来创建自定义控件,例如滑块等,其中“自然”返回值val可以是整数。希望这对您的问题有所了解。

看起来它默认返回一个数字。$("<progress value='50' max='100'>").get(0).value === 50.
2021-04-26 01:44:41
第一个链接坏了。
2021-05-13 01:44:41

唔。对于控制台中的所有这些,jQuery$($0).val()和 Javascript$0.value返回字符串“3”:

<input type='number' value='3'/>
<input type='text' value='3'/>
<input type='radio' value='3'/>
<input type='checkbox' value='3'/>

所以我认为jQuery val() 文档可能更清楚。我看不出它是如何返回一个数值的,所以我建议使用parseInt($($0).val())or parseFloat($($0).val())

您可以简单地创建一个 jquery 插件来代替 val() 来使用它。在这里,我创建了函数 nval() 来代替 val() 在获取元素值时使用。

$.fn.nval = function() {
   return Number(this.val())
};

然后在您的代码中只需使用以下内容即可将值作为数字

$('#elementID').nval()
虽然正确,但它没有回答(非常古老的)问题。
2021-04-15 01:44:41
当然那是真的,但它提供了一种安全的方法。如果你真的想这样做,只需使用一个像 $.fn._val = jq.fn.val; 这样覆盖 val() 的插件;$.fn.val = function(value) { if ( !arguments.length ) { var v = this._val(); if(!isNaN(+v)) { return Number(v); } 返回 v; } else { 返回 this._val(value); } };
2021-04-17 01:44:41
伙计,问题不在于如何克服问题,而只是想了解 jQuery 本身如何Number 像文档所说那样返回 a 您可以看到已接受的答案,其中显示了他们编写它的原因,<progress>例如返回Number 本机!.
2021-04-24 01:44:41