Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery数据方法的返回值为';不能转换成数字_Jquery_Html - Fatal编程技术网

jQuery数据方法的返回值为';不能转换成数字

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 <

我正在开发一个JavaScript计算器,我正在重构代码,通过使用HTML“data”属性使其变干。(我希望有一个用于数据输入的函数,而不是像在v1.0中那样有十个函数——每个数字一个。)我的目标是使用jQuery解析数据属性中的整数,但我遇到了麻烦

以下是HTML中的一行按钮:

<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">&times;
  </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);
)};