jQuery .val()不能使用parseInt转换为Int
问题描述:
我试过parseInt()
无济于事。我仍然可以使用此代码NaN的错误...jQuery .val()不能使用parseInt转换为Int
$("#belt-length").on("input", function(){
\t \t \t var length = parseInt($("#belt-length").val(), 10);
\t \t \t var width = parseInt($("#belt-width").val(), 10);
\t \t \t if(length > 0 && width > 0) {
\t \t \t \t var squaremm = length * width;
\t \t \t \t var square = squaremm/1000000;
\t \t \t \t $("#belt-square-meters").html(square.toString() + "m<sup>2</sup>");
\t \t \t } else {
\t \t \t \t $("#belt-square-meters").html("0.00 m<sup>2</sup>");
\t \t \t };
\t \t });
\t \t $("#belt-width").on("input", function(){
\t \t \t var length = parseInt($("#belt-length").val(), 10);
\t \t \t var width = parseInt($("#belt-width").val(), 10);
\t \t \t if(length > 0 && width > 0) {
\t \t \t \t var squaremm = length * width;
\t \t \t \t var square = squaremm/1000000;
\t \t \t \t $("#belt-square-meters").html(square.toString() + "m<sup>2</sup>");
\t \t \t } else {
\t \t \t \t $("#belt-square-meters").html("0.00 m<sup>2</sup>");
\t \t \t };
\t \t });
我曾尝试转换领域type="number"
。我使用.val()
方法,因为我的理解是.val()
将拉取表单字段的实际值,而不是对表单字段的对象引用。
答
1.当然,您可以通过parseInt
将.val()
结果转换为integert。 parseInt
方法接受字符串作为第一个参数(MDN. parseInt),而.val()
返回文本输入大小写(W3Schools. Input Text value Property)中字符串的“FIRST匹配元素的值属性的值”(W3Schools. jQuery val() Method)。所以你的代码没有问题,你的NaN保护在这里很常见。
2.我建议做一些重构。提取您处理成一个单一的功能,并简化输出:
function processInput() {
var length = parseInt($("#belt-length").val(), 10);
var width = parseInt($("#belt-width").val(), 10);
var square = '0.00';
if(length > 0 && width > 0) {
var squaremm = length * width;
square = squaremm/1000000;
}
$("#belt-square-meters").html(square + "m<sup>2</sup>");
}
$("#belt-length").on("input", processInput);
$("#belt-width").on("input", processInput);
您还没有为他们'.VAL()'你正在试图获得该领域的HTML代码。但它看起来可以有一个非数值的值,这会导致'parseInt'返回'NaN'。常见的回退方式是使用'||'运算符:'parseInt(...)|| 0' – janos
你的代码[在这里工作!](https://jsfiddle.net/hdLpxupf/) – lshettyl