嗨,大家好有问题希望你能提供帮助,
var imageHeight = $("#slider > Img").height();
var imageFloat = (imageHeight + 31 / 2);
alert(imageFloat);
$("#slidernavright").css("marginTop",(imageFloat));
此处有人能看到此问题,imageFloat
上的提醒返回的值为15.5,这意味着imageHeight
未计入,变量imageHeight
正在运行并检索高度图像的正确数量,边距也正常,div
标记向下移动15.5px。不太了解jQuery,我认为这只是一个语法问题。
答案 0 :(得分:1)
您是在window.onload
之前还是之后计算?如果图像尚未完全加载,则jQuery无法检索高度。
window.onload = function() {
var imageHeight = $("#slider > img").height();
var imageFloat = (imageHeight + 31 / 2); // perhaps you meant (imageHeight+31)/2 ?
$("#slidernavright").css("marginTop",imageFloat);
};
答案 1 :(得分:0)
你确定imageHeight正在计算中吗?我只是用imageHeight = 5
对它进行了测试,它对我来说很好,即使没有操作顺序。
答案 2 :(得分:0)
img
很可能未完全加载,因此其height
为0
。
要解决此问题,请在onload
上添加img
处理程序。另外,检查它是否使用.complete
属性进行缓存,然后手动调用处理程序。
$("#slider > Img")
.on("load", function() {
var imageHeight = $(this).height();
var imageFloat = (imageHeight + 31 / 2);
alert(imageFloat);
$("#slidernavright").css("marginTop",(imageFloat));
})
.filter(function() { return this.complete; })
.trigger("load");
请注意,/
的优先级高于+
,因此:
var imageFloat = (imageHeight + 31 / 2);
这样做:
var imageFloat = (imageHeight + (31 / 2));
而不是:
var imageFloat = ((imageHeight + 31) / 2);
答案 3 :(得分:0)
尝试使用parseInt()
- var * = parseInt(imageHeight);
这将给出实际的int值,通常当你得到像这样的值时.height()它们返回值的字符串表示而不是实际的int值。我几天前遇到了这个问题。