Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.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
Javascript Jquery除法转换为int问题_Javascript_Jquery_Variables_Casting_Int - Fatal编程技术网

Javascript Jquery除法转换为int问题

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 {

我试图在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(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();