我试图在Jquery中划分两个变量,如下所示:
var image_width = parseInt($object.width());
var image_height = parseInt($object.height());
var image_ratio = image_width/image_height;
但是,当我尝试在if语句中使用image_ratio时......
if (image_ratio < 1) //image is taller than it is wide
{
//do something...
}
我知道图像比它宽,但功能没有进入if语句。这是因为当两个int的除法产生一个int吗?如果是这样,我如何获得十进制值以检查比率是否小于1?
谢谢!
答案 0 :(得分:4)
alert($object.height())
的结果是什么?如果$ object可能是一个空的jquery集合,那么.height()
将返回null
,而parseInt(null)
将返回NaN
,为NaN
提供image_ratio
1}}。 NaN
与另一个值之间的任何比较都将返回false,这可以解释您所看到的行为。
如果$object.height()
返回0
,您还会NaN
获得image_ratio
,然后您需要查看您的jQuery选择。你在选择正确的元素吗? $object[0].height
给你什么?
答案 1 :(得分:2)
JavaScript doesn't have ints, only "Numbers" (double-precision floating point),所以这不是问题。
检查每个变量的实际值。
答案 2 :(得分:1)
你还有别的错误,因为如果它们没有完全均匀地划分,则将两个数字分开将返回一个小数值。这是一个自己看的jsFiddle:http://jsfiddle.net/jfriend00/wnh9Q/。
var width = 4;
var height = 3;
var aspectRatio = height/width;
if (aspectRatio < 1) {
$("#if").html("Inside the if() statement."); // it goes in here
}
$("#result").html(aspectRatio); // outputs 0.75
要解决您的问题,您需要查看输入值$ object.width()和$ object.height()并查看其中的错误。
答案 3 :(得分:0)
您在此时调用图像对象上的width()
和height()
函数?如果在检索值时尚未加载图像,则值可能是错误的。在这种情况下,请尝试计算附加到图像上的加载事件的函数中的比率。
答案 4 :(得分:0)
不,除法不给出整数结果。 parseInt
方法也没有给出整数结果,因为Javascript中没有整数数据类型。
此外,width
和height
方法返回数字,而不是字符串,因此没有必要解析它们。这只会将数字转换为字符串,然后再转换为数字。只需获取值:
var image_width = $object.width();
var image_height = $object.height();
然而,您的代码中没有任何内容不起作用,因此您必须在代码之外显示一些不起作用的内容。
一些可能的原因:
$object
不包含任何元素。如果是后者,则应在load
事件而不是ready
事件中运行代码。