Javascript只适用于警报,为什么?

Javascript只适用于警报,为什么?,javascript,jquery,Javascript,Jquery,我在下面的语句中关心的语句是fancybox=1;如果我创建的任何临时图像的最大宽度超过480,就需要这样做 与之交互的html的一些背景信息: 我有一个环绕图像的链接。 该图像是已调整大小的版本,链接的href指向原始的未调整大小的图像。 有一系列这样的链接包装图像 一个div,一个附加的大图像,把整个东西包起来 出于某种原因,如果我有“alert(m);”这个代码就可以工作包括。我正确地结束了我的最终if语句(在本例中,我的图像宽度大于480),我得到的最后一个警报是“触发”。但是,如果我把

我在下面的语句中关心的语句是fancybox=1;如果我创建的任何临时图像的最大宽度超过480,就需要这样做

与之交互的html的一些背景信息: 我有一个环绕图像的链接。
该图像是已调整大小的版本,链接的href指向原始的未调整大小的图像。
有一系列这样的链接包装图像
一个div,一个附加的大图像,把整个东西包起来

出于某种原因,如果我有“alert(m);”这个代码就可以工作包括。我正确地结束了我的最终if语句(在本例中,我的图像宽度大于480),我得到的最后一个警报是“触发”。但是,如果我把‘警惕(m);’注释掉,除此之外,不做任何更改,“警报(“触发”);”未能开火,表明我实际上没有进入最后一个条件

你觉得我做错了什么吗?我有Java编程背景,但我对Jquery的熟悉程度相对较低,所以我猜我有一个类似于“alert(m);”的语法问题是一种偶然的修正

“最高”在我的问题范围内是不相关的,它做它应该正确的事情,在其他地方使用,并且在我实现maxWidth之前就存在了

    var tallest = 0;
    var tempImg = new Image();
    var tempSrc = "";
    var maxWidth = 0;

    // Finds the tallest image in the set.
    $("#addon-large-image img").each(function () {
        var n = $(this).attr("height");
        if (tallest < n) {
            tallest = n;
        }

        tempSrc = $(this).parent().attr("href");
        $(tempImg).attr("src", tempSrc);

        var m = $(tempImg).attr("width");

        alert(m);

        if (maxWidth < m) {
            maxWidth = m;
        }
    });

    if (maxWidth > 480) {
        fancybox = 1;
        alert("Triggered");
    }
var=0;
var tempImg=新图像();
var tempSrc=“”;
var maxWidth=0;
//查找集合中最高的图像。
$(“#加载大图像img”)。每个(函数(){
var n=$(this.attr(“高度”);
如果(最高480){
fancybox=1;
警报(“触发”);
}

您的脚本中似乎还没有完全加载某些内容。试着在jQuery文档中运行它。准备好了,看看它是否有效。

您使用过Ajax请求吗

如果是的话,那么把不起作用的代码放在最后

AjaxObject.onreadystatechange = function () {
       if (AjaxObject.readyState == 4) {
           .
           .
           .
           .
           .

      // PUT HERE
        }
   }
那么如果没有

使用以下命令:

function testName()
{
$(document).ready(function(){
    var tallest = 0;
    var tempImg = new Image();
    var tempSrc = "";
    var maxWidth = 0;

    // Finds the tallest image in the set.
    $("#addon-large-image img").each(function () {
        var n = $(this).attr("height");
        if (tallest < n) {
            tallest = n;
        }

        tempSrc = $(this).parent().attr("href");
        $(tempImg).attr("src", tempSrc);

        var m = $(tempImg).attr("width");

        alert(m);

        if (maxWidth < m) {
            maxWidth = m;
        }
    });
});
return true;
}
函数testName()
{
$(文档).ready(函数(){
var=0;
var tempImg=新图像();
var tempSrc=“”;
var maxWidth=0;
//查找集合中最高的图像。
$(“#加载大图像img”)。每个(函数(){
var n=$(this.attr(“高度”);
如果(最高

“希望”可以帮助您,伙计,它与警报一起工作,因为当您关闭警报时,您的对象已完全加载。@Jacob:我刚刚又看了一遍您的代码。我的猜测是maxWidth==0,这就是您将其初始化为的值。if(maxWidth>480){fancybox=1;警报(“已触发”);}从未进入,因为foreach开始运行,但在您检查if(maxWidth>480)时尚未完成。我会在for-each的函数中放入带有上一个警报的代码,并且只在最后一个元素上调用它一次。啊,对象没有正确创建,你们都是对的。它还解释了为什么我得到的第一个警报是0,而下面所有的警报都是宽度。我在循环中添加了一个计数并移动了我的触发器if,因此它只在最后一次运行时执行,但我仍然存在同样的问题,除非包含警报,否则我的图像生成速度不够快,无法正确获得其宽度。有没有一种方法可以确保只有在图像完全生成后才拉宽?@Jacob-这篇文章可能会帮助您在Firefox和Safari中测试图像问题