2013-03-11 81 views
1

我有一個字段,我希望選擇其中一個輸入框來更改字段的背景顏色。我試圖通過一個簡單的onfocus動作來改變輸入的父類的html類,這是一個字段,但我沒有看到任何反應。更改父類onfocus

我有以下內容,並且雙重檢查了類名。

在腳本:

function changefield() 
{ 
document.getElementById(this.parentNode).className = "temp_field"; 
} 

在HTML:

<input class="type1" type="text" size="30" onFocus="changefield()"> 

這感覺就像我正在做一些相當明顯的初學者的錯誤,但我已經有兩個人一起玩它無濟於事。

回答

2

兩件事情:

  • 裏面changefieldthiswindow,這並不沒有parentNode屬性,因此要傳遞給undefinedgetElementById
  • 即使它有一個父節點,this.parentNode會返回一個DOM節點,而getElementById需要一個字符串。

一個快速的解決方案是隻是傳遞要修改你的函數的DOM元素:

function changefield(element) { 
    element.className = "temp_field"; 
} 

onFocus="changefield(this.parentNode)" 

即使父節點都有一個ID,它如果您已經有對id的引用(.parentNode),則無法搜索該節點。

有關事件處理以及如何綁定事件處理程序的更多信息,請參閱the excellent articles at quirksmode.org

0

您正在通過this.parentNodegetElementById()

getElementId()需要一個id字符串作爲參數(不是DOM元素)。