更改父类onfocus

时间:2013-03-11 20:12:33

标签: javascript javascript-events

我有一个字段,我想要选择其中一个输入框来改变字段的背景颜色。我的尝试是通过一个简单的onfocus动作来改变输入的父级的html类,即字段,但我没有看到任何反应。

我有以下内容,并仔细检查了班级名称。

在剧本中:

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

在html中:

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

这感觉就像我犯了一些相当明显的初学者的错误,但我已经有两个人玩它无济于事。

2 个答案:

答案 0 :(得分:2)

两件事:

  • changefield内,this是指window,它没有parentNode属性,因此您将undefined传递给getElementById }。
  • 即使它有父节点,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

答案 1 :(得分:0)

您将this.parentNode传递给getElementById()

getElementId()期望id字符串作为参数(不是DOM元素)。