如何在没有jquery的情况下获取最接近的输入文本的id?

时间:2013-11-21 00:39:55

标签: javascript

在IE 7中完成我的项目(不幸的是)。我有这个DOM,我想知道在我单击的按钮之后定位的最近输入文本的ID,而不是之前的输入文本。这是示例DOM:

<input type="text" id="txt1" />
<br/>
<button>Get ID</button>
<input type="text" id="txt2" />
<br/>

我知道如何在Jquery中做到这一点,但有人知道如何以“硬”方式(如果可能的话)这样做吗?感谢。

1 个答案:

答案 0 :(得分:2)

如果他们总是这样的兄弟姐妹,那应该很容易。

var nextInputId = buttonClicked.nextSibling.id;

jsFiddle

这是脆弱的,除了一组非常简单的有限标记之外,不建议使用它。

不幸的是,在IE9之前,nextElementSibling不可用,所以如果你有一个文本节点(甚至是一些空格),你就会有些痛苦。

相对强大的一个非常好的解决方案是......

var node = buttonClicked;
var nextInputId = null;

while (node = node.nextSibling) {
    if (node.tagName && node.tagName.toLowerCase() == "input") {
        nextInputId = node.id;
        break;
    }
}

jsFiddle