2015-01-22 6 views
-2

здесь после того, как я присвоил переменной «img» значение null в слайд-модуле и вызвал «click on imageGallery» значение img «undefined», почему это так?Невозможно присвоить значение null переменной jQuery

$(".imageGallery").click(function(){ 
    console.log(img+"first"); 
    var img = $(this).attr("src"); //image source 
    console.log(img+"second"); 
    var num = $(this).attr("alt"); //image name 
    $('#popup').slideDown("600",function(){ 
     $(this).html("<div> <p>"+num+"</p> </div> <img src="+img+">"); 
     $("#popup p").addClass("popupName");    
     $("#popup img").addClass("popupImg"); 
     $("#popup div").addClass("popupNameBg"); 
    }) 
    $('#popup').click(function(){   
     $('#popup').slideUp("500"); 
     img = null; 
     console.log(img+"third"); 
     return false; 
    })  
}) 
+5

есть клик внутри одним щелчком .... плохой плохая идея. – epascarello

+0

Откройте консоль с помощью F12, введите «null == undefined» –

ответ

3

Вы должны указать img, прежде чем устанавливать его. Конечно, это будет неопределенным, так как это hoisted variables work.

console.log(img+"first"); <--- reading variable before you set the value, it will be undefined 
var img = $(this).attr("src"); <-- /set variable value 
console.log(img+"second"); <-- will have new value 

Ваш код на самом деле это:

var img; 
console.log(img+"first"); 
img = $(this).attr("src"); 
console.log(img+"second"); 

Установка в нуль не означает ничего, т.к. на каждый клик вы в новой «рамки» и определить новую переменную. Поэтому, когда вы нажимаете всплывающее окно, оно устанавливает значение img равным null, проблема в том, что вы не используете эту переменную снова.

Также на каждом клике вы привязываете новый щелчок к всплывающему окну, что означает, что у вас будет много событий щелчка.

+0

теперь я изменил переменную на глобальную, img задано значение null в первом журнале. но то, что я действительно хотел, это то, что у меня есть slideDown, в этом и отображаю изображение из источника «img». и когда я нажимаю другое изображение, предыдущее изображение отображается до тех пор, пока ползунок не завершится, и тогда только новое изображение заменит старое, что я сделал неправильно здесь.? –

+0

Ну, вы не удалили исходное изображение ... – epascarello

Смежные вопросы