ладно, спасибо за помощь, хоть какое-то направление мысли получил
|
Самовар,
просто не используйте Alert, пора переходить на console.log() :) |
Цитата:
|
Цитата:
Небольшой пример
<div id="AA">1234</div>
<script>
var a = document.all["AA"];
var i = 0;
while ( i++ < 100000){
a.innerHTML = i;
}
</script>
Ни один браузер не будет отрисовывать этот див сто тысяч раз. по тому что это в миллионы раз медленнее чем просто увеличение переменой (свойства) на единицу. Просто у некоторых браузеров возникает желание отрисовать изменения раз а пол секунды. Раньше в стандарте было указано что рисовать нельзя во время выполнения скриптов в новом этот пункт убрали. Можешь попробовать сменить доктайп на HTML 4.01. тогда во время работы JS браузер не должен рендерить страницу. похожая тема https://javascript.ru/forum/misc/718...tml#post473386 |
большая просьба. Помогите мой цикл while переделать в рекурснивный setTimeout. Единственное, чего смог добиться, это бесконечно работающая рекурсия (то есть бесконечный самовызов себя), потому что в результате моей работы в this вместо Т34 попадает Windows, в результате чего все операции с this возвращают NaN. И прочность моего тигренка всегда NaN (что логично, потому что атака Windows тоже NaN)
Tank.prototype.attack = function(target) {
if (target == Tiger) {
setTimeout(function() {
target.hp = target.hp - this.damage;
tooltipElemTiger.innerHTML = target.hp;
alert(this.name + " атаковал " + target.name);
alert("Очков прочности " + target.name + target.hp + " единиц");
if (target.hp <= 0) this.destroyed(target);
}, 5000);
}
};
function battle() {
setTimeout(T34.attack(Tiger), 1000);
}
|
|
блин, спасибо, вы реально умные)
|
| Часовой пояс GMT +3, время: 17:19. |