获得兄弟元素的价值

时间:2017-07-15 17:36:36

标签: javascript

我有以下小提琴:

https://jsfiddle.net/q74k8cke/

代码是这样的:

<div>
  <input type="number" value="1"/>
  <button onclick="alert(this.parentElement.childNodes[0].value)">Click me</button>
</div>

我遇到的问题是我总是未定义,为什么?我尝试了innerHTMLtextvalue并且都给了我相同的结果。如果我尝试nodeName,我会将#text作为输出。我到底错在了什么?

我必须使用纯javascript和内联来解决这个问题。添加ID不是一个选项

1 个答案:

答案 0 :(得分:6)

  

我遇到的问题是我总是未定义,为什么?

因为父节点的第一个子节点是Text节点,其中包含空格,而不是inputchildNodes包含所有类型的节点,而不仅仅是Element s。

您可以使用children,这只是Element的儿童,但您真正想要的是previousElementSibling,这正是它听起来的样子:紧接着的前一个兄弟Element(与Text节点,Comment节点等相对):

<button onclick="alert(this.previousElementSibling.value)">Click me</button>

实例:

&#13;
&#13;
<div>
  <input type="number" value="1"/>
  <button onclick="alert(this.previousElementSibling.value)">Click me</button>
</div>
&#13;
&#13;
&#13;