jQuery数据方法的返回值为';不能转换成数字
我正在开发一个JavaScript计算器,我正在重构代码,通过使用HTML“data”属性使其变干。(我希望有一个用于数据输入的函数,而不是像在v1.0中那样有十个函数——每个数字一个。)我的目标是使用jQuery解析数据属性中的整数,但我遇到了麻烦 以下是HTML中的一行按钮:jQuery数据方法的返回值为';不能转换成数字,jquery,html,Jquery,Html,我正在开发一个JavaScript计算器,我正在重构代码,通过使用HTML“data”属性使其变干。(我希望有一个用于数据输入的函数,而不是像在v1.0中那样有十个函数——每个数字一个。)我的目标是使用jQuery解析数据属性中的整数,但我遇到了麻烦 以下是HTML中的一行按钮: <div class="row" id ="row3"> <div data-number=“7” class="button number gray" id="seven">7 <
<div class="row" id ="row3">
<div data-number=“7” class="button number gray" id="seven">7
</div>
<div data-number=“8” class="button number gray" id="eight">8
</div>
<div data-number=“9” class="button number gray" id="nine">9
</div>
<div data-operand="*" class="button orange operand" id="multiply">×
</div>
</div>
下面是被破坏的函数:
var pushNumber = function() {
var num = $(this).data("number");
var parseNum = parseInt(num);
console.log(parseNum);
console.log(typeof num);
}
单击给定按钮时,console.log(parseNum)
返回“NaN”,而console.log(typeof num)
返回“string”。根据jQuery的文档,我认为.data应该在这里返回一个数字。那么,所有这些都说明了…1.如何确保.data返回的是数字而不是字符串?
2.为什么我不能在num上使用parseInt方法 以下是完整的项目:
我已经尽我最大的能力去寻找一些相关的东西,但是我没有找到。如果此条目是多余的,我深表歉意 问题在于你的花哨的引号,看看你的控制台,它正在用引号输出值 数据编号=“8” 应该是
data number=“8”我认为约什伯克的回答“锁定”了你的实际问题 但我留下我的答案,因为这是你函数的简化
$(".number").on("mouseup", function(){
var thisNumber = parseInt($(this).attr("data-number")); // Is an integrer here.
console.log(thisNumber);
)};
另请注意,您需要修复HTML中奇特引号中的打字错误。Ex
data number=“9”
。事实上,这可能就是问题的症结所在。我认为你的引语有问题,它们是另一种性格,不是真实的“不要使用文字处理器编辑代码,请使用IDE。它不会犯这些错误的。@Barmar,我用CodePen写了整件事!但我认为你的观点还是值得记住的。@Dirk,只是想补充一点:因为浏览器不能将这些字符识别为引号,它们被视为值的一部分,所以值是“7”
,而不仅仅是7
。这意味着JQuery不会自动将值解析为整数,如果您自己尝试解析它,您将得到NaN
。显然,.data方法可以自动转换为数字,因此现在可以简单地将其写成var num=$(this).data(“Number”)
关于.data()
方法,您应该继续阅读。这与检索数据编号
属性的值不同。
$(".number").on("mouseup", function(){
var thisNumber = parseInt($(this).attr("data-number")); // Is an integrer here.
console.log(thisNumber);
)};