хром и css проблема - PullRequest
       5

хром и css проблема

2 голосов
/ 12 ноября 2010

У меня есть этот HTML-код

<div id = 'status'>
<span class="formw" style="background-color:#FBD9E5;">
some text
</span>
</div>

Когда исполняется следующий javascript

$('status').style.backgroundColor = '#99e83f'; 

Chrome выдает следующую ошибку:

Uncaught TypeError: Cannot read property 'style' of null

Кто-нибудь знает причину?

Обновление: я использую Prototype.

Ответы [ 5 ]

4 голосов
/ 12 ноября 2010

Есть две ошибки:

$('status').style.backgroundColor = '#99e83f'; 

Первое:

  • Вам не хватает # для указания идентификатора в селекторе дляdiv состояния.

Секунда:

  • Свойство style не будет работать с объектом jQuery, который является $('#status').

Решение:

Метод первый:

$('#status')[0].style.backgroundColor = '#99e83f'; 

Добавленный выше [0] преобразует объект jQueryв обычный элемент DOM, чтобы свойство style было успешно применено.

Метод второй:

('#status').css('background-color','#99e83f');
2 голосов
/ 14 ноября 2010

Вы специально упоминаете Google Chrome.Chrome более строг в отношении стандартов, чем большинство, особенно если ваш документ имеет DOCTYPE.

Разметка <div id = 'status'> вызывает у меня подозрение.Хотя большинство браузеров прощают обычные синтаксические ошибки, возможно, что, если id пробел отделен от равенства, он будет рассматриваться как логический атрибут, который эквивалентен <div id="id">.

. Вы можете проверить этооткройте консоль javascript (Shift + Ctrl + J) и посмотрите, что получится при наборе:

$('status')
$('id')

Для решения попробуйте это так:

<div id="status">

PS.Я полагаю, что вы на самом деле не хотите изменять стиль DIV, а диапазон, для которого корректно любое из следующего:

$$('#status .formw').style.backgroundColor = '#99e83f';

$$('#status span').style.backgroundColor = '#99e83f';

$('status').down('.formw').style.backgroundColor = '#99e83f';

$('status').select('span').style.backgroundColor = '#99e83f';
1 голос
/ 12 ноября 2010

если вы используете jquery, попробуйте это

$('#status').css('background-color','green');

это должно работать

1 голос
/ 12 ноября 2010

Попробуйте

$('#status').style.backgroundColor = '#99e83f';
0 голосов
/ 12 ноября 2010

Иногда возникают некоторые проблемы с DOM, когда дело доходит до элементов в прототипе, когда вы используете классические методы DOM.

Вместо этого используйте определенные методы в прототипе, чтобы прочитать и установить стили для элемента.

Два метода, которые вас интересуют:

Так, например, если вы хотите установить фон вашего элемента, вы должны использовать:

$('status').setStyle( { 'background-color' : '#99e83f' } );

Если вы хотите прочитать атрибут, вы должны использовать:

$('status').getStyle( 'background-color' )

Для толпы jquery $ ('element_id') является эквивалентным сокращением для document.getElementById ('element_id'). Если вы хотите получить элемент по селектору, это будет $$ ('#element_id') .first ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...