не правильно вычесляет цифры
что то у меня не праивльно работае, вычесление цифр, подскажите где у меня проблема, надо сделать плавное затухание (не прибигая к ферймворкам)
<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); я сам не назначал, а оно считывала стиль существуюущий |
можно получить так
op = getComputedStyle(document.getElementById('tron'), null).opacity; но в старых IE это работать не будет там свой метод получения (поищи поиском currentStyle) лучше используй библиотеки типа jQuery |
op = getComputedStyle(document.getElementById('tron'), null).opacity; alert(op); не работает вот структура <style> #tron { это будет в цсс width:500px; height:500px; background:#36F; } <style> <div id="tron"></div> надо что бы считывало элементы, которые даже не указаны в цсс, вот к примеру по логике браузер сам всегда ставит opacity 1, есле не указать в цсс и много других так стилей, мне надо что бы их считывало, ну на данный момент на примере opacity подскажите, не прибегая к джейквери и другим фреймверкам Цитата:
|
у меня работает и alert выдает 1
или браузер у тебя старый IE или скрипт ты запускаешь до того как html загрузился |
а да,))все работает)), я просто по привычке PHP пишу код, я JS только начинаю познавать, и вечено забываю что код, надо после писать
|
czp,
Основы программной анимации на JavaScript - почитай. |
спасибо решил вопрос)
|
Часовой пояс GMT +3, время: 09:43. |