2010-11-12 2 views
2

У меня есть этот HTML кодхром и проблема CSS

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

Когда следующий Javascript запускается на выполнение

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

хром бросает следующее сообщение об ошибке:

Uncaught TypeError: Cannot read property 'style' of null 

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

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

+0

@user, у нас есть свойство BackgroundColor fordiv, он должен быть цвет правильно или фоновое изображение URL – kobe

+0

Я считаю, что вам не хватает '#' для 'ID', сделайте следующее:' $ ('# status ') ', я предполагаю, что вы используете jQuery здесь tho. – Jakub

+0

@gov - да, это свойство действительно. @user - работает ли с document.getElementById()? – Ben

ответ

1

Попробуйте

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

Сообщение об ошибке указывает на это не является jQuery – Quentin

+0

Почему вы думаете, что это не селектор? Я этого не понимаю. Редактировать: Забудьте об этом, я только что нашел ваш комментарий об этом. –

+0

Это не сработало. Я использую Prototype. – user16455

1

если вы используете JQuery попробовать этот

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

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

+3

, который изменит цвет шрифта r ... – Jakub

+0

@jakum извините за мою ошибку, я отредактировал свой ответ – kobe

+0

@jakub, право делать в jquery - это метод .css (синтаксис), большинство из приведенных выше ответов не использовали это, но почему мой ответ отмечен , – kobe

4

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

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

Во-первых:

  • Вы пропускаете # указать идентификатор в вашем селекторе для состояния дел.

Второе:

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

Решение:

Метод один:

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

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

Способ второй:

('#status').css('background-color','#99e83f'); 
+0

@sarfraz, я дал свое решение некоторое время назад, но не знаю, пытался он или нет. – kobe

+0

@gov: Вы отредактировали свой ответ после моего: http://stackoverflow.com/posts/4161919/revisions :) – Sarfraz

+0

@sarfraz ... хм я забыл - между – kobe

0

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

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

Оба метода интересующие вас является:

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

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

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

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

2

Вы конкретно упоминаете 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'; 
Смежные вопросы