|zyciis| 为什么this.previousSibling取不到他的同级节点的上一个对像,谢谢 急

zyciis280 2010-02-22 11:18:12
<input type="text" value="123" class="" />
<div onclick="alert(this.previousSibling.value)" >
<span>Edit</span></div>
----------------------------
点击div取不到123
谢谢
...全文
259 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2010-02-22
  • 打赏
  • 举报
回复
节点对应的数字,参考w3c
http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html
http://www.w3.org/TR/DOM-Level-2-Core/core.html
孟子E章 2010-02-22
  • 打赏
  • 举报
回复
nodeType 属性


Element 1
Attribute 2
Text 3
Comment 8
Document 9
孟子E章 2010-02-22
  • 打赏
  • 举报
回复
nodeType 可以判断是什么类型的节点,是text节点还是html元素节点等
zyciis280 2010-02-22
  • 打赏
  • 举报
回复
如果用while来进行判断的话
alert(this.previousSibling )
得到的是:object Text
那么我想得到为这个的时候再向前找,但如何判断这个对像是object Text呢?
我用typeof(this.previousSibling)
得到的是object 而不是 object Text

谢谢
孟子E章 2010-02-22
  • 打赏
  • 举报
回复
一般这样处理
<input type="text" value="123" class="" />
<div onclick="a(this)" >
<span>Edit </span> </div>
<script>
function a(o)
{
o=o.previousSibling
while(o.nodeType != 1)
{
o=o.previousSibling
}
alert(o.value)
}
</script>
zyciis280 2010-02-22
  • 打赏
  • 举报
回复
this.previousSibling
那要如何来写间容呢
用do while吗?
孟子E章 2010-02-22
  • 打赏
  • 举报
回复
用nextSibling的时候也会存在这样的问题
zyciis280 2010-02-22
  • 打赏
  • 举报
回复
<input type="text" value="123" class="" /><div onclick="alert(this.previousSibling.value)" ></div>
我晕这样就可以了,但好像我用nextSibling的时候没有这个问题啊!!
孟子E章 2010-02-22
  • 打赏
  • 举报
回复
也可以循环判断:
while(o.previousSibling.nodeType != 1)
o=o.previousSibling

alert(o.value)
孟子E章 2010-02-22
  • 打赏
  • 举报
回复
你需要判断节点类型,有些浏览器是计算空白节点的,这样就可以
<input type="text" value="123" class="" /><div onclick="alert(this.previousSibling.value)" > 

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧