我在IE 7中正在做我的项目,我想知道每当我点击它之前的标签时如何获取文本输入的值。
这是我的DOM:
<table>
<tr>
<td>
<label id="lbl_name">Name:</label>
</td>
<td>
<input type="text" id="name" />
</td>
</tr>
</table>
我尝试使用nextSibling,但我得到一个空白值。
document.getElementById('lbl_name').attachEvent('onclick', function () {
alert(document.activeElement.nextSibling.nodeValue);
});
请帮忙吗?如果您可以以非jquery方式共享代码。感谢
答案 0 :(得分:4)
输入不是标签的兄弟。要使用这种方法,您需要:
但是,此标签目前无用,因为它根本与输入无关。如果您修复了标记:
<label id="lbl_name" for="name">Name:</label>
你可以:
document.getElementById( this.getAttribute('for') ).value
答案 1 :(得分:2)
那是因为这个领域不是兄弟姐妹。
你必须去找父母,兄弟姐妹,然后是第一个孩子:
document.activeElement.parentNode.nextSibling.children[0];
也就是说,如果您之间没有文本节点
答案 2 :(得分:0)
我修改了@Kenneth的回答,这就是它的工作原理:
document.getElementById('lbl_name').attachEvent('onclick', function () { alert(document.activeElement.nextSibling.children[0].value);
});
document.activeElement
是我点击的'标签',nextSibling
将是<td>
标记,其中包含<input>
元素,children[0]
是{ {1}}。在其上添加<input type="text">
将返回其中的文本。
感谢所有人的投入= D