我有一个字段,我想要选择其中一个输入框来改变字段的背景颜色。我的尝试是通过一个简单的onfocus动作来改变输入的父级的html类,即字段,但我没有看到任何反应。
我有以下内容,并仔细检查了班级名称。
在剧本中:
function changefield()
{
document.getElementById(this.parentNode).className = "temp_field";
}
在html中:
<input class="type1" type="text" size="30" onFocus="changefield()">
这感觉就像我犯了一些相当明显的初学者的错误,但我已经有两个人玩它无济于事。
答案 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元素)。