2010-11-12 94 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 2010-11-12 05:36:34

+0

我相信你缺少一個''#爲'ID',這樣做:'$('#狀態')',我假設你在這裏使用jQuery。 – Jakub 2010-11-12 05:42:24

+0

@gov - 是的,該屬性是有效的。 @user - 這是否與document.getElementById()一起工作? – Ben 2010-11-12 05:43:43

回答

1

嘗試

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

錯誤消息指示它是不是jQuery – Quentin 2010-11-12 05:58:24

+0

爲什麼你認爲這不是選擇器?我不明白編輯:忘了它,我剛剛發現你對此的評論 – 2010-11-12 06:19:01

+0

這並沒有工作,我正在使用原型 – user16455 2010-11-12 10:10:41

1

,如果你使用jQuery試試這個

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

這應該工作

+3

這將改變字體顏色r ... – Jakub 2010-11-12 05:41:01

+0

@jakum對不起,我的錯誤我編輯了我的答案 – kobe 2010-11-12 05:42:04

+0

@jakub,正確的jQuery做是.css方法(語法),大多數上述答案沒有使用,但爲什麼我的答案是明確的。 – kobe 2010-11-12 05:49:41

4

有兩種錯誤:

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

第一:

  • 您錯過了#在選擇器中爲狀態div指定了ID。

二:

  • style屬性不會jQuery對象是$('#status')上工作。

解決方案:

方法一:

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

[0]的上面添加jQuery對象轉換成正常的DOM元素,以便成功地應用於style屬性。

方法二:

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

@sarfraz,我給你的解決方案一段時間後,但不知道他是否嘗試過。 – kobe 2010-11-12 06:38:41

+0

@gov:你編輯你的答案後我:http://stackoverflow.com/posts/4161919/revisions :) – Sarfraz 2010-11-12 06:41:36

+0

@sarfraz ...嗯我忘了 - 之間 – kobe 2010-11-12 06:48:41

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空格與equals分隔開來將其視爲布爾屬性,這相當於<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';