Jquery 将两个属性与值进行比较

Jquery 将两个属性与值进行比较,jquery,attr,Jquery,Attr,我正试图得到这方面的数学,可能遗漏了一些简单的东西。它应该吐出dis-loc,但我得到了NaN。这是我的密码 Jquery console.log("-----" +$('.images').attr('dis') - $('.images').attr('loc') ); 我意识到我可以把这些放进一个var中,但这需要在可能的30个图像上运行 <img style="left: -195px; height: 882px;" clas

我正试图得到这方面的数学,可能遗漏了一些简单的东西。它应该吐出dis-loc,但我得到了NaN。这是我的密码

Jquery

console.log("-----" +$('.images').attr('dis') - $('.images').attr('loc')
                         );
我意识到我可以把这些放进一个var中,但这需要在可能的30个图像上运行

 <img style="left: -195px; height: 882px;" class="images" speed-racer="55" src="-------/assets/img/fwman/FeeneyMan_bike.png" loc="300px" dis="-140">

像这样试试。注意额外的
()


我想原因是因为你给一个数字加了一个字符串,然后你把它们都减了

您是否尝试使用
parseInt()
parseFloat()
将这些字符串值转换为整数


小心地使用括号

console.log("-----" + (parseFloat($('.images').attr('dis')) - parseFloat($('.images').attr('loc'))));
编辑:

parseFloat和parseInt之间的区别(由OP询问)举例说明:

parseFloat("1.02") = 1.02 //includes decimal
parseInt("1.02") = 1 //ignores digits after decimal point

这些不应该是数据属性吗

console.log("-----" +$('.images').attr('data-dis') - $('.images').attr('data-loc'));

因为您的站点上大约有30个图像,
$('.images')。attr('dis')
将有多个结果。因此,您必须使用foreach,如:

$('.images').each(function(){
  console.log(parseFloat($(this).attr('dis')) - parseFloat($(this).attr('loc')));
})

我们能看到你的html吗?你能分享你的html吗?如果你想做数字减法,试着先用“number($('.images').attr('dis')”)将它们转换成数字。如果你也能提供html,我们就能提供更好的帮助。那些家伙都错了。你说你有30张照片。因此,
$('.images')
是一个对象数组。看看我的答案,这对你有用。为什么不说你需要从一开始就保持html干净??这会减少火焰。另外,您现在添加的代码片段也没有什么帮助:(此外,人们并不吹嘘投票,但嘿。您不应该对这一点如此陌生吗?实际上它是-3/+1一般来说,对于parseInt,您需要包含基数值。因此parseInt(thingToParse,10)对于base10 integers.javascript可以动态转换;如果表达式是分离的,则无需解析int动态转换是javascript的最佳猜测,根据我的经验,它猜错了很多。我的观点是永远不会让它改变。明确说明您希望它做什么,除非您愿意接受javascript的最佳猜测。@cam obvi对于返回的数据类型,一个返回一个浮点数,而另一个返回一个最底层的整数。这样,对parseFloat的解释就很好了,我对此并不熟悉,因为我正在进行更多的数学计算。parseFloat返回一个浮点数。parseInt returns是一个整数.parseInt允许您(而且您应该)指定一个基数值来确定要使用的基数。parseFloat(“1.02”)=1.02&parseInt(“1.02”)=1.如果你关心小数的精确减法,你需要parseFloat。我很希望避免小数陷阱,但这是可行的。现在我知道parseFloat的工作原理将在未来有所帮助。Jurik,我已经写了,但感谢你的输入。我很感激。很好,投票支持你的问题,但仍然-2-我讨厌它****没关系,因为我不想发布HTML,有时我担心答案会因为添加太多信息而变得复杂。
parseFloat("1.02") = 1.02 //includes decimal
parseInt("1.02") = 1 //ignores digits after decimal point
console.log("-----" +$('.images').attr('data-dis') - $('.images').attr('data-loc'));
$('.images').each(function(){
  console.log(parseFloat($(this).attr('dis')) - parseFloat($(this).attr('loc')));
})