使用变量进行 Jquery 计算

Jquery calculation with variables

本文关键字:Jquery 计算 变量      更新时间:2023-09-26

嗨,伙计们遇到了一个问题,希望你能提供帮助,

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了解不多,我认为这只是语法问题。

您是在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);
};
很可能

img没有完全加载,所以它的height0

要修复它,请在 img 上放置一个 onload 处理程序。此外,检查它是否使用 .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);

你确定图像高度被正确计算了吗?我只是用imageHeight = 5测试了它,即使没有操作顺序的东西,它对我来说也很好用。

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

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