关于span和div的问题

yuanweihuayan 2011-04-13 04:06:16
我最近才刚看JS对里面的一些东西还不懂,提的问题可能很低级.希望懂的人解答:
格式如下:
<html><head><link rel="stylesheet" type="text/css"/>
<script type="text/javascript" >
function SetState(obj, sytleCls,s,s1)
{
obj.className = sytleCls;
if (sytleCls == 'mouseover')
{
document.getElementById(s).innerHTML="回复</span>|<span>转发</span>|<span>更多操作"; document.getElementById(s1).innerHTML="";
}
else if(sytleCls == 'mouseout')
{
document.getElementById(s).innerHTML= "旧的文本 ";
document.getElementById(s1).innerHTML= "就文本2";
}
}
</script>
<title>
</title>
</head>
<body>
<div onmouseover="SetState(this,'mouseover',0,10)" onmouseout="SetState(this,'mouseout',0,10)"><img src = "C:\Documents and Settings\install.insTALL-31BE561\桌面\个人HTML、js及css测试程序\我的文件夹\a.bmp" align = "left" class="alignTop"><table><tr><td>名称     <span id = '10'>就文本2</span>
<span class = "scolor" id= '0'>旧的文本</span></td></tr><tr><td>内容</td>
</tr>
</table>
</div>
</body>
</html>
当我的鼠标放在该层上时,其背景和一些文本会改变,但是光标无法定位到"就文本"上,测试好像"就文本"完全不在div内部.而且我又想响应那里面的单击事件
即:
document.getElementById(s).innerHTML="<span>回复</span>|<span OnClick=...>转发</span>|<span>更多操作</span>";
...全文
421 27 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
tang3567 2011-04-26
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 yuanweihuayan 的回复:]
引用 25 楼 tang3567 的回复:
代码不是一般乱

你需求是什么?
?//????
[/Quote]
当我没说。
yuanweihuayan 2011-04-24
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 tang3567 的回复:]
代码不是一般乱

你需求是什么?
[/Quote]?//????
tang3567 2011-04-22
  • 打赏
  • 举报
回复
代码不是一般乱

你需求是什么?
bohecha0104 2011-04-18
  • 打赏
  • 举报
回复
document.getElementById(s).innerHTML="<span>回复</span>|<span OnClick=...>转发</span>|<span>更多操作</span>";


这个click出来了嘛?
yuanweihuayan 2011-04-18
  • 打赏
  • 举报
回复
帖子发到今天已经是快一个星期了.现在终于尘埃落定了!东西也出来了!
86y 2011-04-18
  • 打赏
  • 举报
回复
标签多不是重点,重点是你写的怎方法!
yuanweihuayan 2011-04-18
  • 打赏
  • 举报
回复
还不够清楚呀?就是我有一个层:<div onmouseout onmouseover><table><td<tr><span>文本内容</span></tr></td><table></div>,当我鼠标放在层上时,响应onmouseover这没问题吧?然后我就响应这个消息,把<span>里面在增加多个<span>,结果东西增加好了(我可以利用document.getElementById(id).outerHTML来进行查看.)但是当我鼠标放在刚增加的span里面的内容时,他就响应了onmouseout消息.Google上说是因为JS的一个bug,我测试了一下,原来确实是,但是要怎么解决呢?网上也有一些解决办法.就是举了一个例子来说明解决办法,但是我这个却不能成功.可能是我的层里面的标签太多了吧!现在应该清楚了吧
yuanweihuayan 2011-04-18
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 bohecha0104 的回复:]
document.getElementById(s).innerHTML="<span>回复</span>|<span OnClick=...>转发</span>|<span>更多操作</span>";


这个click出来了嘛?
[/Quote]
还真没有.真是杯具啊,怎么会有这种问题呢>
你知道吗?
yuanweihuayan 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 bohecha0104 的回复:]
1 将setState调用放在<span id = '10'>就文本2</span> 的span 里面。 可以将光标定位到"就文本"上,而且触发onmouseover事件,显示 “回复|转发|更多操作”
2 innerHtml 也许不能这样直接调用onclick事件,也许就是根本不支持,这个我也不太清楚。你可以换一个方法来写。比如用div隐藏,就是css 的。obj.style.display=……
[/Quote]
问题原因找到了.原来是因为JS的一个bug.在<div>层中,当鼠标在其上时响应onmouseover消息,当鼠标在其内部的标签里面时,它会响应onmouseout消息.多么杯具的事情啊
ycproc 2011-04-15
  • 打赏
  • 举报
回复
不知道你说的什么

详细点说
KK3K2005 2011-04-15
  • 打赏
  • 举报
回复
你就说下你完整的需求是什么吧
yuanweihuayan 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 bohecha0104 的回复:]
这只是第一个问题的原因,第二个呢????
[/Quote]你说的第二个问题我有点看不懂啊.我才学习JS,就发现了一个这么严重的bug.Google上有很多解决方案,照着做还是有问题.我这个比较复杂,主要是层里面套了层(有几层要处理).这个东西花费了我两天的时间,结果还是有高人的指点.哎,真没有想过是JS的BUG.
bohecha0104 2011-04-15
  • 打赏
  • 举报
回复
这只是第一个问题的原因,第二个呢????
bohecha0104 2011-04-14
  • 打赏
  • 举报
回复
1 将setState调用放在<span id = '10'>就文本2</span> 的span 里面。 可以将光标定位到"就文本"上,而且触发onmouseover事件,显示 “回复|转发|更多操作”
2 innerHtml 也许不能这样直接调用onclick事件,也许就是根本不支持,这个我也不太清楚。你可以换一个方法来写。比如用div隐藏,就是css 的。obj.style.display="none"; 和obj.style.display="";。obj 可以是很多类型的。 类似于这种办法的。
关于2 的话,我会继续查资料看的,如果 2 的问题找到了解决办法,也告诉我一声啊。。。


晚安
xiaosaner3 2011-04-14
  • 打赏
  • 举报
回复
事件冒泡问题?
yuanweihuayan 2011-04-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wishifef 的回复:]
引用楼主 yuanweihuayan 的回复:
当我的鼠标放在该层上时,其背景和一些文本会改变,但是光标无法定位到"就文本"上,测试好像"就文本"完全不在div内部.而且我又想响应那里面的单击事件
即:


"就文本"是在div内部吧,你mouseover的时候这个是不显示的,你给div加个边框看下
[/Quote]加边框不行啊!
dink999 2011-04-14
  • 打赏
  • 举报
回复
MINGMINGWENTI?
yuanweihuayan 2011-04-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jiatulangzi123 的回复:]
你对div加 鼠标事件响应 那肯定是在还没定位到 “新文本” 就开始 改变,
因为 div还包含其他部分,只要在div范围内,还没到<td> 就开始改变

一句话概括:你的作用范围设定的大了,不是没响应,是响应的div范围大了。

修改 将 onmouseover="SetState(this,'mouseover',0,10)" onmouseout="SetState(this,'m……
[/Quote]
按照你那样说的话,那我的代码就达不到要求了,但是就算向你那样,把onmouseover="SetState(this,'mouseover',0,10)" onmouseout="SetState(this,'mouseout',0,10)" 改到表格中第一行tr里面
如下 <tr onmouseover="SetState(this,'mouseover',0,10)" onmouseout="SetState(this,'mouseout',0,10)">后,也满足不了要求啊!
_thinkinghunter 2011-04-14
  • 打赏
  • 举报
回复
你对div加 鼠标事件响应 那肯定是在还没定位到 “新文本” 就开始 改变,
因为 div还包含其他部分,只要在div范围内,还没到<td> 就开始改变

一句话概括:你的作用范围设定的大了,不是没响应,是响应的div范围大了。

修改 将 onmouseover="SetState(this,'mouseover',0,10)" onmouseout="SetState(this,'mouseout',0,10)" 改到表格中第一行tr里面
如下 <tr onmouseover="SetState(this,'mouseover',0,10)" onmouseout="SetState(this,'mouseout',0,10)">
wishifef 2011-04-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 yuanweihuayan 的回复:]
当我的鼠标放在该层上时,其背景和一些文本会改变,但是光标无法定位到"就文本"上,测试好像"就文本"完全不在div内部.而且我又想响应那里面的单击事件
即:
[/Quote]

"就文本"是在div内部吧,你mouseover的时候这个是不显示的,你给div加个边框看下
加载更多回复(6)

87,997

社区成员

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

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