用变量计算Jquery

时间:2013-10-24 21:42:48

标签: javascript jquery html css

嗨,大家好有问题希望你能提供帮助,

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,我认为这只是一个语法问题。

4 个答案:

答案 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很可能未完全加载,因此其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);

答案 3 :(得分:0)

尝试使用parseInt() - var * = parseInt(imageHeight);

之类的内容

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