我有两个要素:
<input a>
<input b onclick="...">
单击 b 时,我想访问 a 并操作它的一些数据。A 没有全局唯一名称,因此document.getElementsByName
已出局。查看事件对象,我认为event.target.parentNode
会有一些类似的功能getElementsByName
,但 <td>s 似乎不是这种情况。有什么简单的方法可以做到这一点吗?
我有两个要素:
<input a>
<input b onclick="...">
单击 b 时,我想访问 a 并操作它的一些数据。A 没有全局唯一名称,因此document.getElementsByName
已出局。查看事件对象,我认为event.target.parentNode
会有一些类似的功能getElementsByName
,但 <td>s 似乎不是这种情况。有什么简单的方法可以做到这一点吗?
如果a
和b
彼此相邻并且具有相同的父级,则可以使用 的prevSibling
属性b
来查找a
。
您应该能够找到从事件对象中单击的元素。根据您的浏览器,您可能需要e.target
或e.srcElement
. 下面的代码来自这个w3schools 示例:
function whichElement(e) {
var targ;
if (!e) var e = window.event;
if (e.target) {
targ=e.target;
} else if (e.srcElement) {
targ = e.srcElement;
}
if (targ.nodeType==3) { // defeat Safari bug
targ = targ.parentNode;
}
var tname;
tname = targ.tagName;
alert("You clicked on a " + tname + " element.");
}
然后,您可以使用nextSibling
和prevSibling
DOM 遍历函数。 更多信息在这里。又是 w3schools 对XML DOM Nodes的参考。
Prototype还具有在 DOM 中移动的不错的功能。在您的示例中,类似以下内容可以解决问题:
b.up().down('a')
如果在该级别有多个 a 元素,您可以使用 CSS 选择器来准确指定您想要的元素
将您的普通 JavaScript 抛在脑后。获取 JQuery——它将为您节省大量时间。