|
Использование getAttribute
|
|
|
2012-05-27Дата: Воскресенье, 27.05.2012, 20:02 | Сообщение # 1 |
Сержант
Группа: Проверенные
Статус: 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") -- этот вариант тоже не проканал..(
| | |
|
|
2012-05-27Дата: Воскресенье, 27.05.2012, 22:15 | Сообщение # 2 |
Аццкий кодер
Группа: Администраторы
Статус: 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')
| | |
|
|
2012-05-28Дата: Понедельник, 28.05.2012, 15:05 | Сообщение # 3 |
Сержант
Группа: Проверенные
Статус: 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 вканало.. но хотелось бы узнать в чем я неправильно думаю.
| | |
|
|
2012-05-28Дата: Понедельник, 28.05.2012, 15:33 | Сообщение # 4 |
Аццкий кодер
Группа: Администраторы
Статус: Unknown
|
vadimreal, Quote (vadimreal) сделал else вканало.. но хотелось бы узнать в чем я неправильно думаю. Без понятия, по идее должно работать.
| | |
|
|
2012-05-28Дата: Понедельник, 28.05.2012, 15:42 | Сообщение # 5 |
Сержант
Группа: Проверенные
Статус: Offline
|
вот я так же думал что по идее должно... а результат показывает что даже перекрашивание из зеленого в красный перестает работать.. а вариант не через this можно попробовать? я имею ввиду что то типа такого $("#timelineDiv"+i).hasClass("dynamicDivGreen")) ???
| | |
|
|
2012-05-28Дата: Понедельник, 28.05.2012, 15:48 | Сообщение # 6 |
Аццкий кодер
Группа: Администраторы
Статус: Unknown
|
vadimreal, Quote (vadimreal) а вариант не через this можно попробовать? я имею ввиду что то типа такого $("#timelineDiv"+i).hasClass("dynamicDivGreen")) ??? А смысл? У вас косяк явно не в скрипте, а в разметке. Проверь что отдаёт сравни что написано у тебя. Наверняка где-то несовпадение.
| | |
|
|
2012-05-28Дата: Понедельник, 28.05.2012, 15:59 | Сообщение # 7 |
Сержант
Группа: Проверенные
Статус: 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 не выдает.. хм.
| | |
|
|
2012-05-28Дата: Понедельник, 28.05.2012, 17:54 | Сообщение # 8 |
Аццкий кодер
Группа: Администраторы
Статус: Unknown
|
vadimreal, Quote (vadimreal) Странно вы сказали про разметку.. Не понимаю что вы имели ввиду.. Я сказал про разметку только потому что скрипт в сообщении №3 под надписью «так не робит» - абсолютно рабочий. Отсюда и вывод - дело не в скрипте.
Quote (vadimreal) в style есть Разметка - это не только стиль. Это весь HTML объект.
Quote (vadimreal) когда создаются эти div-ки я им навязываю divTag.className = "dynamicDivGreen"; Да об этом я догадался )
| | |
|
|
2012-05-30Дата: Среда, 30.05.2012, 20:27 | Сообщение # 9 |
Сержант
Группа: Проверенные
Статус: Offline
|
все тут правильно и все он делает...надо было просто на логику посмотреть.. мы смотрим если див зеленый красим его в красный а потом смотрим если див красный красим его в зеленый.. )))
| | |
|