[Ликбез]

Форма входа
Логин:
Пароль:

Меню сайта


Скрипты и коды для юкоз - Форум аццкого кодера » Если вы пришли за помощью, то Вам сюда... » Использование getAttribute

Использование getAttribute
[1] vadimreal [27.05.2012, 20:02]
Подскажите как правильно использовать?

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") -- этот вариант тоже не проканал..(

[2] likbezz [27.05.2012, 22:15]
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')
[3] vadimreal [28.05.2012, 15:05]
Спс

"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 вканало.. но хотелось бы узнать в чем я неправильно думаю.

[4] likbezz [28.05.2012, 15:33]
vadimreal,
Quote (vadimreal)
сделал else вканало.. но хотелось бы узнать в чем я неправильно думаю.

Без понятия, по идее должно работать.
[5] vadimreal [28.05.2012, 15:42]
вот я так же думал что по идее должно... а результат показывает что даже перекрашивание из зеленого в красный перестает работать..
а вариант не через this можно попробовать?
я имею ввиду что то типа такого
$("#timelineDiv"+i).hasClass("dynamicDivGreen")) ???
[6] likbezz [28.05.2012, 15:48]
vadimreal,
Quote (vadimreal)
а вариант не через this можно попробовать?
я имею ввиду что то типа такого
$("#timelineDiv"+i).hasClass("dynamicDivGreen")) ???

А смысл? У вас косяк явно не в скрипте, а в разметке.
Проверь что отдаёт
Code
$(this).hasClass()
сравни что написано у тебя. Наверняка где-то несовпадение.
[7] vadimreal [28.05.2012, 15:59]
Странно вы сказали про разметку.. Не понимаю что вы имели ввиду..

в 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 не выдает.. хм.
[8] likbezz [28.05.2012, 17:54]
vadimreal,
Quote (vadimreal)
Странно вы сказали про разметку.. Не понимаю что вы имели ввиду..

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

Quote (vadimreal)
в style есть

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

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

Да об этом я догадался )
[9] vadimreal [30.05.2012, 20:27]
все тут правильно и все он делает...надо было просто на логику посмотреть..
мы смотрим если див зеленый красим его в красный
а потом смотрим если див красный красим его в зеленый.. )))


Полная версия сайта