Jquery将cast转换为int问题

时间:2011-07-19 22:50:12

标签: javascript jquery variables casting int

我试图在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?

谢谢!

5 个答案:

答案 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中没有整数数据类型。

此外,widthheight方法返回数字,而不是字符串,因此没有必要解析它们。这只会将数字转换为字符串,然后再转换为数字。只需获取值:

var image_width = $object.width();
var image_height = $object.height();

然而,您的代码中没有任何内容不起作用,因此您必须在代码之外显示一些不起作用的内容。

一些可能的原因:

  • $object不包含任何元素。
  • 图片尚未加载,因此该元素没有任何大小。

如果是后者,则应在load事件而不是ready事件中运行代码。