Javascript Jquery除法转换为int问题
我试图在Jquery中划分两个变量,如下所示:Javascript Jquery除法转换为int问题,javascript,jquery,variables,casting,int,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 {
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(image\u ratio<1)//图像比宽高
{
//做点什么。。。
}
我知道图像的高度大于宽度,但是函数没有进入if语句。这是因为当两个int除以时,会生成一个int吗?如果是,我如何获得十进制值以检查比率是否小于1
谢谢 警报($object.height())的结果是什么?如果$object可能是一个空的jquery集合,那么
.height()
将返回null
,parseInt(null)
将返回NaN
,为image\u比率提供NaN
。NaN
与另一个值之间的任何比较都将始终返回false,这将解释您看到的行为
如果$object.height()
返回0
,您还将获得image\u ratio
的NaN
,然后您需要查看jQuery选择。您是否选择了正确的元素?$object[0]。height
给了您什么?您还有其他错误,因为如果两个数字不能完全等分,则两个数字相除将返回一个十进制值。这里有一个JSFIDLE供您自己查看:
var宽度=4;
var高度=3;
var aspectRatio=高度/宽度;
如果(aspectRatio<1){
$(“#if”).html(“在if()语句中。”);//它放在这里
}
$(“#结果”).html(aspectRatio);//产出0.75
要解决您的问题,您需要查看输入值$object.width()和$object.height(),看看有什么问题。您在哪一点调用图像对象上的width()
和height()
函数?如果在检索值时图像尚未加载,则值可能是错误的。在这种情况下,请尝试计算附加到映像上的加载事件的函数中的比率。,因此这不是问题所在
检查每个变量的实际值。否,除法不会给出整数结果。parseInt
方法也不会给出整数结果,因为Javascript中没有整数数据类型
此外,width
和height
方法返回的是数字,而不是字符串,因此没有必要解析它们。这只会将数字转换为字符串,然后再转换回数字。只需获取以下值:
var image_width = $object.width();
var image_height = $object.height();
但是,代码中没有不起作用的东西,因此必须在代码之外显示一些不起作用的东西
一些可能的原因:
$object
不包含任何元素
- 图像尚未加载,因此元素没有任何大小
如果是后者,您应该在load
事件中运行代码,而不是在ready
事件中运行代码。jQuery和函数已经返回数字(或null
),不需要parseInt
将它们转换为数字。alert($object.height())给我0。这就是罪魁祸首!我试图将图像对象传递到函数中,但图像有一个类,因此我使用$(“.lightbox image”)
引用它。像这样传入一个对象图像不起作用吗?是的-如果它是0,那么你将得到image\u ratio
的NaN
。确保您的选择包括您期望的DOM元素(在firebug中,执行console.log($object)
-您将获得一个包含0个或更多DomeElement的数组,您可以单击该数组)
var image_width = $object.width();
var image_height = $object.height();