Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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
jQuery—;变量比较,不需要';行不通_Jquery_If Statement_Conditional_Tumblr - Fatal编程技术网

jQuery—;变量比较,不需要';行不通

jQuery—;变量比较,不需要';行不通,jquery,if-statement,conditional,tumblr,Jquery,If Statement,Conditional,Tumblr,编辑:我已经把它放在一个文档就绪函数中。 虽然图像很大,但文档就绪与大图像一致吗? 您可以在此处看到它不起作用: 这简直让我发疯 var maxxxHeight = $(window).height(); $(".theImage").children('img').each(function() { myHeight = $(this).height(); if ( myHeight > maxxxHeight ){ $(this).next().text(

编辑:我已经把它放在一个文档就绪函数中。 虽然图像很大,但文档就绪与大图像一致吗? 您可以在此处看到它不起作用:

这简直让我发疯

var maxxxHeight = $(window).height();

$(".theImage").children('img').each(function() {
  myHeight = $(this).height();
      if ( myHeight > maxxxHeight ){
      $(this).next().text("Browser " + maxxxHeight + " image height " + myHeight);
  };
});
出于某种原因

myHeight>maxxxHeight不会产生任何结果。有些图像的尺寸更大,有些则不然。图像不是由CSS设置的。事实上,它们的宽度和高度在任何一点上都没有规定

这怎么可能?这完全是一个noob问题,但我以前做过无数次if's和


谢谢

您需要进行一些调试。由于比较失败,请通过将myHeight和maxxxHeight的值打印到控制台来检查它们。我保证其中一个不是数字。事实上,一个可能是未定义的


您是否将jQuery代码放入
$(document).ready()
调用中?

我可以想到发生这种情况的几个原因

  • 在代码运行时,图像可能尚未完全加载
  • 图像可能不是与类匹配的元素的直接子元素
  • 在加载文档之前,您的代码可能正在运行,并且没有任何内容与类匹配 我的最佳猜测是(1),在这种情况下,您应该为图像添加一个加载处理程序,当图像完成加载时,该处理程序会执行您想要的操作。在文档加载和图像加载上运行代码可能是正确的,以防在应用图像加载处理程序之前缓存图像并触发图像加载事件。如果在加载文档后动态替换图像,则需要加载图像

    注意:您应该在本地对myHeight进行范围界定,以避免污染全局命名空间(以及由于范围界定问题而导致的潜在错误)


    我修复了var范围。我得到的图像高度为“0”。我只是不明白为什么会这样。在我的css中,现在img{的高度和宽度为“自动”。@RGBK如果代码运行时图像尚未加载,则元素没有高度。请尝试在文档加载而不是文档就绪时运行代码。
    $(document).load(function(){…})
    好的,但实际上,我应该看看加载它的div的高度,如果知道图像有多大,它应该知道它会有多大?如果不需要我为每个图像指定元数据,不是吗?内联或通过css?不可能浏览器只知道图像一经加载就有多大加载所有这些像素?!@RGBK在加载内容之前,DIV不会有大小(除非您设置它)。在渲染图像之前,浏览器不知道图像有多大(元数据可能存在),除非您指定它,然后它将缩放图像以适应您的大小。
    $(document).load( function() {
        var maxxxHeight = $(window).height();
    
        $(".theImage").children('img').each(function() {
            $(this).load( function() { // only if images can be loaded dynamically
                handleImageLoad(this);
            });
            handleImageLoad(this);
        });
    
        function handleImageLoad(img)
        {
            var $img = $(img),  // declare local and cache jQuery for the argument
                myHeight = $img.height();
            if ( myHeight > maxxxHeight ){
               // this is where your real code would go to make adjustments, etc.
               $img.next().text("Browser " + maxxxHeight + " image height " + myHeight);
            };
        }
    });