1

大家好,有问题希望能帮到你

var imageHeight = $("#slider > Img").height();
var imageFloat = (imageHeight + 31 / 2);

alert(imageFloat);

$("#slidernavright").css("marginTop",(imageFloat));

任何人都可以在这里看到这个问题,警报上imageFloat的值是 15.5,这意味着imageHeight没有考虑,变量imageHeight正在工作并检索高度图像的正确数量,边距正在工作并且div标签正在向下移动了 15.5 像素。对jQuery不太了解,我认为这只是一个语法问题。

4

4 回答 4

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);
};
于 2013-10-24T21:46:25.777 回答
0

你确定 imageHeight 计算正确吗?我刚刚对其进行了测试,imageHeight = 5它对我来说效果很好,即使没有操作顺序。

于 2013-10-24T21:47:34.073 回答
0

尝试使用类似的东西parseInt()——var * = parseInt(imageHeight);

这将给出实际的 int 值,通常当您获得像这样的 .height() 值时,它们会返回值的字符串表示形式,而不是实际的 int 值。几天前我遇到了这个问题。

于 2013-10-24T22:01:56.917 回答
0

很可能img没有完全加载,所以它height0.

要修复它,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);
于 2013-10-24T21:49:39.920 回答