我有以下小提琴:
https://jsfiddle.net/q74k8cke/
代码是这样的:
<div>
<input type="number" value="1"/>
<button onclick="alert(this.parentElement.childNodes[0].value)">Click me</button>
</div>
我遇到的问题是我总是未定义,为什么?我尝试了innerHTML
,text
,value
并且都给了我相同的结果。如果我尝试nodeName
,我会将#text
作为输出。我到底错在了什么?
我必须使用纯javascript和内联来解决这个问题。添加ID不是一个选项
答案 0 :(得分:6)
我遇到的问题是我总是未定义,为什么?
因为父节点的第一个子节点是Text
节点,其中包含空格,而不是input
。 childNodes
包含所有类型的节点,而不仅仅是Element
s。
您可以使用children
,这只是Element
的儿童,但您真正想要的是previousElementSibling
,这正是它听起来的样子:紧接着的前一个兄弟Element
(与Text
节点,Comment
节点等相对):
<button onclick="alert(this.previousElementSibling.value)">Click me</button>
实例:
<div>
<input type="number" value="1"/>
<button onclick="alert(this.previousElementSibling.value)">Click me</button>
</div>
&#13;