Рекурсивный SetTimeout
Вот код
function bulletMove(source){
var t = setTimeout(function run() {
bulletT34.style.left = coordT34Left + "px";
coordT34Left = coordT34Left + 10;
if(coordT34Left >= coordTigerLeft){
bulletT34.remove();
clearTimeout(t);
}
setTimeout(run, 100);
}, 100);
}
почему clearTimeout(t); не заканчивает рекурсиный SetTimeout? И второй вопрос. насколько подходит данная функция для удаления элемента со страницы? bulletT34.remove(); вот полный код если нужен https://codepen.io/Sergeev2/pen/qxLXzB |
вам по сути клир не нужен, просто перестаньте его запускать.
<div></div>
<script>
var i = 0; s = 100;
(run =()=> {
document.querySelector('div').textContent = i++;
if(i<s) setTimeout(run, 100);
})();
</script>
вот пример, функция перестанет запускаться когда i перестанет быть меньше S |
современные браузеры поддерживают el.remove()
для более старых el.parentNode.removeChild(el); |
function bulletMove(source){
var t = setTimeout(function run() {
bulletT34.style.left = coordT34Left + "px";
coordT34Left += 10;
if(coordT34Left >= coordTigerLeft){
bulletT34.remove();
}
else setTimeout(run, 100);
}, 100);
}
|
спасибо, получилось. (run =()=> {
bulletT34.style.left = coordT34Left + "px"; coordT34Left = coordT34Left + 10; if(coordT34Left < coordTigerLeft) setTimeout(run, 100); else bulletT34.remove(); но, как сделать, чтобы при повторном нажатии функция запускалась заново? То есть чтобы вылетал второй снаряд. Я думал, что если первый снаряд удалится, то после нажатия на кнопку вылетит второй. А сейчас хоть снаряд и исчезает, но второй снаряд не вылетает, вообще ничего не происходит. |
а, кажется понял, это мои переменные виноваты, счас разберусь
|
всё, разобрался, большое спасибо
|
| Часовой пояс GMT +3, время: 19:22. |