|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
谢谢
...全文
254 10 打赏 收藏 举报
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
孟子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)" > 
相关推荐
发帖
JavaScript

8.7w+

社区成员

Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
帖子事件
创建了帖子
2010-02-22 11:18
社区公告
暂无公告