Фильтр по:
  

  • Страница 1 из 1
  • 1
Модератор форума: Admin, Cибиря4ка, Komoff, Diana  
Использование getAttribute
Дата: Воскресенье, 27.05.2012, 20:02 |
vadimreal
Сержант
Группа: Проверенные
Сообщений: 29
Награды: 0
Репутация: 0
Статус: Offline


Подскажите как правильно использовать?

Code

    $("#timelineDiv"+i).mouseover(function(){
     if(scrollDown == true)
      {
       if($("#timelineDiv"+i).getAttribute ("backgroundColor") == "green")   !!!!!!!!!!!!! в этой строчек ошибка
                    if(this.getAttribute ("backgroundColor") == "green")  !!!!!!!!!! так тоже пытался!! безрезультатно
           {
              this.setAttribute("style",'float:left; width: 9px; height: 15px;margin-right: 2px;background-color: red;');  
           }
      }
    });



в первом случае выдает ошибку Object #<Object> has no method 'getAttribute'
во втором когда this возвращает null что означает что атрибут не существует

Добавлено (27.05.2012, 20:02)
---------------------------------------------
if(this.style.getAttribute ("backgroundColor") == "green") -- этот вариант тоже не проканал..(

 
Дата: Воскресенье, 27.05.2012, 22:15 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9093
Награды: 23
Репутация: 459
Статус: Unknown


vadimreal,
Quote (vadimreal)
Подскажите как правильно использовать?

Вообще, проверять цвет таким образом - ненадёжное занятие, в Мозилле, непример, вернёт значение в RGB = то бишь не «green» а «rgb(0, 128, 0)» ... Лучше уж использовать data() или класс.
Типа:
Code
<div id="timelineDiv0" class="green"><br /></div>
<script type="text/javascript">
var scrollDown=true,i=0;
$("#timelineDiv"+i).mouseover(function(){
if(scrollDown == true)
{
   if($(this).hasClass("green"))               
     {
      $(this).css({float:'left',width:'9px',height:'15px',marginRight:'2px',backgroundColor:'red'}).addClass('red').removeClass('green');    
     }
   }
});
</script>


Quote (vadimreal)
if(this.style.getAttribute ("backgroundColor") == "green") -- этот вариант тоже не проканал..(

Я же уже говорил, this - это только для JavaScript объектов.
Для объектов jQuery - $(this)
Если нужно перевести jQ в JS - вот так: $(this)[0]
Наоборот - $(this)

getAttribute - это метод JavaScript применяется только к объектам, а не к свойствам. Так что this.style.getAttribute - уже не правильно - style - это свойство.

Вот так для JS
Code
this.style.backgroundColor

и вот так для jQ
Code
$(this).css('backgroundColor')


 
Дата: Понедельник, 28.05.2012, 15:05 |
vadimreal
Сержант
Группа: Проверенные
Сообщений: 29
Награды: 0
Репутация: 0
Статус: Offline


Спс

"this.style.getAttribute"" это я нашел в какой то статейке..

как буду в рабочей версии попробую..)

Добавлено (28.05.2012, 14:54)
---------------------------------------------
так не робит:

Code

    $("#timelineDiv"+i).mouseover(function(){
     if(scrollDown == true)
      {
       if($(this).hasClass("dynamicDivGreen"))
      {
             $(this).css({float:'left',width:'9px',height:'15px',marginRight:'2px',backgroundColor:'red'}).addClass('dynamicDivRed').removeClass('dynamic DivGreen');
      }
       if($(this).hasClass("dynamicDivRed"))
      {
             $(this).css({float:'left',width:'9px',height:'15px',marginRight:'2px',backgroundColor:'green'}).addClass('dynamicDivGreen').removeClass('dyn amicDivRed');
      }

      }
    });

а так робит.. почему нельзя второй раз this использовать?..
Code

    $("#timelineDiv"+i).mouseover(function(){
     if(scrollDown == true)
      {
       if($(this).hasClass("dynamicDivGreen"))
      {
             $(this).css({float:'left',width:'9px',height:'15px',marginRight:'2px',backgroundColor:'red'}).addClass('dynamicDivRed').removeClass('dynamic DivGreen');
      }

      }
    });

Добавлено (28.05.2012, 15:05)
---------------------------------------------
сделал else вканало.. но хотелось бы узнать в чем я неправильно думаю.

 
Дата: Понедельник, 28.05.2012, 15:33 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9093
Награды: 23
Репутация: 459
Статус: Unknown


vadimreal,
Quote (vadimreal)
сделал else вканало.. но хотелось бы узнать в чем я неправильно думаю.

Без понятия, по идее должно работать.


 
Дата: Понедельник, 28.05.2012, 15:42 |
vadimreal
Сержант
Группа: Проверенные
Сообщений: 29
Награды: 0
Репутация: 0
Статус: Offline


вот я так же думал что по идее должно... а результат показывает что даже перекрашивание из зеленого в красный перестает работать..
а вариант не через this можно попробовать?
я имею ввиду что то типа такого
$("#timelineDiv"+i).hasClass("dynamicDivGreen")) ???


 
Дата: Понедельник, 28.05.2012, 15:48 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9093
Награды: 23
Репутация: 459
Статус: Unknown


vadimreal,
Quote (vadimreal)
а вариант не через this можно попробовать?
я имею ввиду что то типа такого
$("#timelineDiv"+i).hasClass("dynamicDivGreen")) ???

А смысл? У вас косяк явно не в скрипте, а в разметке.
Проверь что отдаёт
Code
$(this).hasClass()
сравни что написано у тебя. Наверняка где-то несовпадение.


 
Дата: Понедельник, 28.05.2012, 15:59 |
vadimreal
Сержант
Группа: Проверенные
Сообщений: 29
Награды: 0
Репутация: 0
Статус: Offline


Странно вы сказали про разметку.. Не понимаю что вы имели ввиду..

в style есть
Code

         .dynamicDivGreen {   
    float:left;
    width: 9px;   
             height: 15px;  
    margin-right: 2px;
             background-color: green;     
         }   
   .dynamicDivRed{
    float:left;
    width: 9px;   
             height: 15px;  
    margin-right: 2px;
             background-color: red;    
   }

когда создаются эти div-ки
я им навязываю divTag.className = "dynamicDivGreen";

ошибки JS не выдает.. хм.


 
Дата: Понедельник, 28.05.2012, 17:54 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9093
Награды: 23
Репутация: 459
Статус: Unknown


vadimreal,
Quote (vadimreal)
Странно вы сказали про разметку.. Не понимаю что вы имели ввиду..

Я сказал про разметку только потому что скрипт в сообщении №3 под надписью «так не робит» - абсолютно рабочий. Отсюда и вывод - дело не в скрипте.

Quote (vadimreal)
в style есть

Разметка - это не только стиль. Это весь HTML объект.

Quote (vadimreal)
когда создаются эти div-ки
я им навязываю divTag.className = "dynamicDivGreen";

Да об этом я догадался )


 
Дата: Среда, 30.05.2012, 20:27 |
vadimreal
Сержант
Группа: Проверенные
Сообщений: 29
Награды: 0
Репутация: 0
Статус: Offline


все тут правильно и все он делает...надо было просто на логику посмотреть..
мы смотрим если див зеленый красим его в красный
а потом смотрим если див красный красим его в зеленый.. )))


 
  • Страница 1 из 1
  • 1
Поиск:


Мобильная версия