2016-11-08 2 views
0

Я хочу удалить оверлей, когда я нажимал и изображение, но это не так. Оверлей исчезает, когда я нажимаю на div (оверлей), но не тогда, когда я нажимал на фотографию. Консоль не показывала мне ошибок.removeChild работает только из img

(function(){ 
 
    
 
    
 

 
    window.onclick=function (e){ 
 
    
 
    var hit=e.target.tagName; 
 
    
 

 
    if(hit=='IMG'){ 
 
    
 
    overlay=document.createElement('div'); 
 
    overlay.id='photo'; 
 
    document.body.appendChild(overlay); 
 
    overlay.style.position='absolute'; 
 
    overlay.style.top=0; 
 
    overlay.style.background='rgba(0,0,0,0.53)'; 
 
    overlay.style.cursor='pointer'; 
 
    overlay.style.width=window.innerWidth+"px"; 
 
    overlay.style.height=window.innerHeight+"px"; 
 
    
 
    
 
    photo=e.target.src; 
 
    popeikona=document.createElement('IMG'); 
 
    popeikona.src=photo; 
 
    overlay.appendChild(popeikona); 
 
    popeikona.style.width='550px'; 
 
    popeikona.style.height='380px'; 
 
    
 
    popeikona.style.margin='15%'; 
 
    
 
    
 
    
 
    }; 
 
    
 
     
 
     overlay.addEventListener('click',function(){ 
 
     
 
     overlay.parentElement.removeChild(overlay); 
 
     
 
    }); 
 
     
 

 
    
 
    window.onscroll=function(){ 
 
      
 
     if(overlay){ 
 
     overlay.style.top=window.pageYOffset+"px"; 
 
     overlay.style.left=window.pageXOffset+"px"; 
 
    } 
 
    }; 
 
     
 
    console.log(overlay); 
 
} 
 

 

 

 
}());

Любые предложения?

ответ

0

Когда вы создаете новый элемент оверлея, к нему не подключен слушатель. Попробуйте:

window.onclick=function (e){ 

     var hit=e.target.tagName; 


     if(hit=='IMG'){ 

     overlay=document.createElement('div'); 
     overlay.id='photo'; 
     document.body.appendChild(overlay); 
     overlay.style.position='absolute'; 
     overlay.style.top=0; 
     overlay.style.background='rgba(0,0,0,0.53)'; 
     overlay.style.cursor='pointer'; 
     overlay.style.width=window.innerWidth+"px"; 
     overlay.style.height=window.innerHeight+"px"; 

     overlay.addEventListener('click',function(){   
      overlay.parentElement.removeChild(overlay); 
     }   

     photo=e.target.src; 
     popeikona=document.createElement('IMG'); 
     popeikona.src=photo; 
     overlay.appendChild(popeikona); 
     popeikona.style.width='550px'; 
     popeikona.style.height='380px'; 

     popeikona.style.margin='15%';  

     } 
}; 
+0

Нет actually.When Я ударил IMG код работает right.Then я нажал накладку и это disappear.I повторить процесс, и когда я нажал на IMG внутри наложения наложения не исчезнет. – liontass

+0

Хорошо, я понимаю. Причина, по которой он не исчез, заключается в том, что вы создали новый элемент overlay, который не имеет обработчика события. Я сейчас обновлю свой ответ. – Matus

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