0
애니메이션이 완료된 후 div를 제거하려고하는데 애니메이션의 첫 번째 반복 직후에 제거가 발생하는 것처럼 보입니다. 나는 child.remove() 호출을 제거하면 http://jsfiddle.net/ny85ckk2/이 애니메이션이 끝날 때까지 계속 다음은 jsfiddle 애니메이션 페이드 아웃 후 div 제거 -
function $(el) { return document.getElementById(el); }
var divFirst = $('first');
if(divFirst)
divFirst.addEventListener("click", addSecond);
function removeSecond()
{
fadeOut();
var child = $('second');
console.log("remove called");
child.remove();
}
function addSecond()
{
console.log("addSecond called");
var aContainer = document.createElement('div');
aContainer.setAttribute('id', 'second');
aContainer.innerHTML = "Second";
aContainer.addEventListener("click", removeSecond);
document.body.appendChild(aContainer);
fadeIn();
}
function fadeIn()
{
var secondDiv = $('second');
if(secondDiv)
{
secondDiv.style.opacity ? secondDiv.style.opacity :
secondDiv.style.opacity = "0.0";
if(parseFloat(secondDiv.style.opacity) <= 1)
{
secondDiv.style.opacity = parseFloat(secondDiv.style.opacity) + 0.05;
setTimeout(fadeIn, 50);
}
}
}
function fadeOut()
{
var secondDiv = $('second');
if(secondDiv)
{
console.log(secondDiv.style.opacity);
if(parseFloat(secondDiv.style.opacity) >0)
{
secondDiv.style.opacity = parseFloat(secondDiv.style.opacity) - 0.05;
setTimeout(fadeOut, 50);
}
}
}
. 아이디어가 있으십니까?
덕분에 많은
내가 때문에, 일반적으로 깨끗한 솔루션의 팬입니다 두 번째 옵션은 나에게 가장 좋은 옵션이지만 여전히 작동하지 않습니다. http://jsfiddle.net/ny85ckk2/1/ 아이디어가 이해되었지만 콜백은 여전히 호출되지 않습니다./ – CKY
@CKY : 잘못된 것입니다. 'fadeOut'가 스스로를 호출하고 있다는 것을 sed로 알았습니다. (나는 그것을 어떻게 놓쳤는 지 모르지만 ...). 그래서 문제는 결국'0'에 도달 한 호출에는'callback' 인수가 없었습니다. 나는 그것을 위에 고쳤다. –
덕분에 훨씬 명확 해졌습니다 :) – CKY