не правильно вычесляет цифры
что то у меня не праивльно работае, вычесление цифр, подскажите где у меня проблема, надо сделать плавное затухание (не прибигая к ферймворкам)
<style> #tron { width:500px; height:500px; background:#0F0; } </style> <input type="button" onclick="hide('tron', 1)" value="opacity" /> <div id="tron" ></div> function hide(ob, x) { element = document.getElementById(ob); i = 0; op = parseFloat(x); if (op > i || op !== 0) { op -=0.05; element.style.opacity = op; /*element.style.filter='alpha(opacity='+op*100+')';*/ tss = setTimeout('hide(\''+ob+'\', '+op+')', 10); } if (op < 0) { clearTimeout(tss);element.style.opacity = 0;} alert(op); } из сообшений видно, что скрипт как то не правильно делает вычесление, и в итоги в минус заходит, как исправить? |
нужно просто вынести
op -=0.05; выше проверки на ноль еще хорошо бы объявлять переменные в функции с помощью var, иначе они станут глобальными, а это плохо вместо 'hide(\''+ob+'\', '+op+')' лучше нормально вызывать функцию и вместо alert() использовать console.log(), - не будет прерываться выполнение программы будет что-то вроде function hide(ob, x) { var element = document.getElementById(ob), i = 0, op = parseFloat(x); op -= 0.05; if (op > i) { element.style.opacity = op; setTimeout(function () { hide(ob, op); }, 10); } else { element.style.opacity = 0; } console.log(op); } да по хорошему лучше и document.getElementById(ob) один раз делать, а не каждый раз |
дак всеравно не праивльно считает он, 0,95, потом 0,86 потом 0,7999999, как он так криво считает??
надо что бы четко шло 1 0,95 0,90 0,85 0,80 .... и так далие как так сделать? |
op = (op-0.05).toFixed(2); |
если это так важно, то после
op -= 0.05; добавьте строку op = Math.round(op * 100) / 100; |
ооо) спасибо, сработали обама варианта))
Pavel M+ nekto_O+ |
ой ребята подскажите, а как скрипт заморозить??
в php вот так sleep(25) а в JS?? на нужное мне вермя преостановить |
|
спасибо)
|
в продолжение темы, а подскажите как мне вычеслить стиль???, тоесть
op = document.getElementById('tron').style.opacity не работает, мне надо что бы op = parseFloat(x); я сам не назначал, а оно считывала стиль существуюущий |
Часовой пояс GMT +3, время: 23:11. |