제 문제는 처음으로 타이머가 내려가는 것을 보는 것입니다. 그러나 그 후에는 이상하게 진행되어 결국 브라우저가 충돌합니다.카운트 다운이 끝난 라이트 박스
오류가 발생하는 코드는 여기에 넣습니다. 거대한 것이므로 여기에 모두 넣을 수 없습니다.
자바 스크립트 :
// display the lightbox
function lightbox(insertContent) {
// jQuery wrapper (optional, for compatibility only)
(function($) {
// add lightbox/shadow <div/>'s if not previously added
if ($('#lightbox').size() === 0) {
var theLightbox = $('<div id="lightbox"/>');
var theShadow = $('<div id="lightbox-shadow"/>');
var countDown = $('<div class="countDown"/>');
$(theShadow).click(function(e) {
closeLightbox();
});
$('body').append(theShadow);
$('body').append(theLightbox);
$('body').append(countDown);
}
// insert HTML content
if (insertContent !== null) {
$('#lightbox').html(insertContent);
$('#lightbox').corner("15px");
// ALWAYS LAST
//$('#lightbox').append(countDown);
CountDown(5);
}
// move the lightbox to the current window top + 100px
$('#lightbox').css('top', $(window).scrollTop() + 100 + 'px');
$('#lightbox-shadow').css('top', $(window).scrollTop());
$('.countDown').css('top', $(window).scrollTop() + 150 + "px");
// display the lightbox
$('#lightbox').show();
$('#lightbox-shadow').show();
$('.countDown').show();
})(jQuery); // end jQuery wrapper
}
function CountDown(tiempo) {
if (tiempo <= 0) {
clearInterval(IntervalID);
closeLightbox();
} else {
$(".countDown").html("Esta ventana se cerrará en " + tiempo + " segundos");
tiempo--;
}
var IntervalID = setInterval("CountDown(" + tiempo + ")", 1000);
}
// close the lightbox
function closeLightbox() {
// jQuery wrapper (optional, for compatibility only)
(function($) {
// hide lightbox/shadow <div/>'s
$('#lightbox').hide();
$('#lightbox-shadow').hide();
$('.countDown').hide();
// remove contents of lightbox in case a video or other content is actively playing
$('#lightbox').empty();
})(jQuery); // end jQuery wrapper
};
$(document).ready(function() {
$("#Login").click(function(event) {
event.preventDefault();
lightbox("Username Not Available");
$("#lightbox").css("color", "#FF0000");
});
});
HTML :
<input type="button" id="Login" value="Hello">
CSS :
#lightbox {
position: absolute;
width: 50%;
left: 25%;
background: #fff;
z-index: 1001;
display: none;
color: #069;
padding: 20px;
text-align: center;
font-size: 24px;
font-weight: bold;
font-variant: small-caps;
text-shadow: 1px 1px #000;
}
#lightbox-shadow {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #000;
filter: alpha(opacity=90);
-moz-opacity: 0.90;
-khtml-opacity: 0.90;
opacity: 0.90;
z-index: 1000;
display: none;
}
.countDown {
position: absolute;
width: 50%;
left: 25%;
background: #fff;
z-index: 1002;
display: none;
color: #069;
padding: 20px;
text-align: center;
font-size: 18px;
font-variant: small-caps;
font-weight: normal;
margin: 10px auto;
display: none;
}
JsFiddle :
,jsfiddle에서 작동하지 않는 이유를 모르겠습니다. 그것은 내 PC에서 잘 작동합니다.
안녕하세요 Amith, 답변 주셔서 감사합니다, 나는 그 변경 그러나 여전히 의심없이 작동하지 않습니다. 처음에는 괜찮 았지만 실행이 끝나면 setTimeout을 setTimeout으로 변경했습니다. 이제 브라우저가 멈추지 않습니다. 카운트 다운 기능에 오류가 있다고 생각합니다. – Archangels
해결책을 찾았 기쁘다. 나는 첫번째 시도 자체에서'CountDown'에서 버그를 알아 차렸을 것입니다. 어쨌든 이전 코드에 무엇이 잘못되었는지 설명하고 해결할 수있는 해결책을 제시하여 답변을 업데이트했습니다. 그게 너를 위해 고쳐 주면 알려줘. –