2010-01-14 3 views
0

Заявление, о котором я беспокоюсь в следующем утверждении, - fancybox = 1; Это должно произойти, если моя maxWidth для любого из созданных временных изображений составляет более 480.Javascript Only Работает с предупреждением, почему?

Немного фона на html это взаимодействует с: У меня есть ссылка, обернутая вокруг изображения.
Изображение представляет собой измененную версию, а ссылка href - оригинальное, неизображенное изображение.
Существует серия этих ссылок, обернутых изображениями
A div, addon-large-image, обертывает все это.

По какой-то причине этот код работает, если у меня есть «alert (m);» включен. Я правильно кончаю в своем последнем утверждении if (в этом случае у меня есть изображения более широкие, чем 480), и последнее предупреждение, которое я получаю, - «Triggered». Однако, если я прокомментирую «alert (m);» и ничего не меняю, «alert (« Triggered »); не стреляет, показывая мне, что я, по сути, не вступил в последнее условие.

Любые мысли о том, что я делаю неправильно здесь? У меня есть язык программирования в 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"); 
    } 
+0

вы используете Fire Fox? –

+0

Тестирование в Firefox и Safari – Jacob

ответ

1

Похоже, что в вашем скрипте что-то еще не загружено. Попробуйте запустить это в документе jQuery.ready и посмотреть, работает ли он.

+0

Работает с предупреждением, потому что к моменту закрытия оповещения ваш объект будет полностью загружен. – nickytonline

+0

согласен, первое, что приходит в голову, это состояние гонки – pstanton

+0

nickyt, Это сидит внутри документа. – Jacob

0

Вы использовали запрос 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; 
} 

надежда не помогает вам дружище