1

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

我有以下内容,并仔细检查了类名。

在脚本中:

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

在 html 中:

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

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

4

2 回答 2

2

两件事情:

  • 里面changefield,this指的是window,它没有parentNode属性,所以你传递undefinedgetElementById
  • 即使它有一个父节点,this.parentNode也会返回一个 DOM 节点,而getElementById需要一个字符串。

一个快速的解决方案是将要修改的 DOM 元素传递给函数:

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

onFocus="changefield(this.parentNode)"

.parentNode即使父节点有一个 ID,如果您已经有对 id ( )的引用,则搜索该节点也没有意义。

有关事件处理以及如何绑定事件处理程序的更多信息,请查看quirksmode.org 上的优秀文章

于 2013-03-11T20:15:54.590 回答
0

你正在传递this.parentNodegetElementById().

getElementId()需要一个 id 字符串作为参数(不是 DOM 元素)。

于 2013-03-11T20:15:19.583 回答