Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.06.2011, 12:36
Аспирант
Отправить личное сообщение для Polkan Посмотреть профиль Найти все сообщения от Polkan
 
Регистрация: 30.04.2010
Сообщений: 49

уменьшение opacity работает, увеличение - не работает
Здравствуйте.
Простейший пример, не понимаю в чем разница ведь меняю только минут на плюс...

так работает (непрозрачность уменьшается)
<html><head><title></title></head>
<body>
<script>
window.onload=function(){
  obj = document.getElementById("li_1");
  obj.style.opacity = 1;
  while (obj.style.opacity > 0 ) {
    alert("opacity = "+obj.style.opacity);
    obj.style.opacity = obj.style.opacity - 0.2;
  }
}
</script>

  <ul class="slider" id="idSlider">
    <li id="li_1"><div style="width:100px;height:100px;background-color:red;"></div></li>
  </ul>
</body>
</html>


а так не работает (срабатывает только первый шаг увеличения)
<html><head><title></title></head>
<body>
<script>
window.onload=function(){
  obj = document.getElementById("li_1");
  obj.style.opacity = 0;
  while (obj.style.opacity < 1 ) {
    alert("opacity = "+obj.style.opacity);
    obj.style.opacity = obj.style.opacity + 0.2;
  }
}
</script>

  <ul class="slider" id="idSlider">
    <li id="li_1"><div style="width:100px;height:100px;background-color:red;"></div></li>
  </ul>
</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 17.06.2011, 12:38
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Минус приводит строку к числу, а плюс конкатенирует строки.
Ответить с цитированием
  #3 (permalink)  
Старый 17.06.2011, 12:42
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,109

Пробуем так

<html><head><title></title></head>
<body>
<script>
window.onload=function(){
  obj = document.getElementById("li_1");
  obj.style.opacity = 0;
  while (obj.style.opacity < 1 ) {
    alert("opacity = "+obj.style.opacity);
    obj.style.opacity = +obj.style.opacity + 0.2;
  }
}
</script>

  <ul class="slider" id="idSlider">
    <li id="li_1"><div style="width:100px;height:100px;background-color:red;"></div></li>
  </ul>
</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 17.06.2011, 12:43
Аспирант
Отправить личное сообщение для Polkan Посмотреть профиль Найти все сообщения от Polkan
 
Регистрация: 30.04.2010
Сообщений: 49

но если пишу
obj.style.opacity = parseInt(obj.style.opacity) + 0.2;
то тоже не работает
Ответить с цитированием
  #5 (permalink)  
Старый 17.06.2011, 12:44
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,109

Polkan, мой вариант работает (смотрел в Опере)...
Ответить с цитированием
  #6 (permalink)  
Старый 17.06.2011, 12:45
Аспирант
Отправить личное сообщение для Polkan Посмотреть профиль Найти все сообщения от Polkan
 
Регистрация: 30.04.2010
Сообщений: 49

ksa, спасибо!
а что означает такая запись? +obj.style.opacity
Ответить с цитированием
  #7 (permalink)  
Старый 17.06.2011, 12:47
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от Polkan
while (obj.style.opacity < 1 )
obj.style.opacity-строка . и строка сравнивается с единицей. не во всех браузерах пройдёт- приходилось в старых явно приводить к числовому типу

Последний раз редактировалось dmitriymar, 17.06.2011 в 12:49.
Ответить с цитированием
  #8 (permalink)  
Старый 17.06.2011, 12:49
Аспирант
Отправить личное сообщение для Polkan Посмотреть профиль Найти все сообщения от Polkan
 
Регистрация: 30.04.2010
Сообщений: 49

dmitriymar, спасибо, добавлю на всякий случай parseInt в сравнение, хотя оно и так работает
Ответить с цитированием
  #9 (permalink)  
Старый 17.06.2011, 12:50
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от Polkan
parseInt
не пройдёт)
parseFloat
и не только в сравнение но и в добавление. поскольку там где циклы не проскочит-и дальше будет работать как со строкой
Ответить с цитированием
  #10 (permalink)  
Старый 17.06.2011, 12:53
Аспирант
Отправить личное сообщение для Polkan Посмотреть профиль Найти все сообщения от Polkan
 
Регистрация: 30.04.2010
Сообщений: 49

dmitriymar, ага, спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пропорциональное уменьшение размеров картинок (делаем тамбнейлы), не работает adelante Элементы интерфейса 4 28.11.2010 09:44
Динамическая HTML форма (FireFox - работает, IE - не работает) dm1tr1y Общие вопросы Javascript 10 11.12.2009 15:59
Не работает уменьшение элемента vvsh Элементы интерфейса 1 05.08.2009 02:44
[новичек] Не работает вызов ф-ции по событию onMouseOver Vo.One Events/DOM/Window 2 16.05.2009 10:08