我最近才刚看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>名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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>";

解决方案 »

  1.   

    如果我这样操作的话也会有问题:
    document.getElementById(s).innerHTML="<span>回复</span>|<span>转发</span>|<span>更多操作<span>"; 
      

  2.   

    就是我在一个层里定义了两个<span>,结果在相应onmouseover时当鼠标放在"转发"上,它本应该不响应onmouseout消息的.
    说白了,是<div><span><span>内容</span></span></div>,"内容"不属于div(层).
      

  3.   


    "就文本"是在div内部吧,你mouseover的时候这个是不显示的,你给div加个边框看下
      

  4.   

    你对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)">
      

  5.   

    按照你那样说的话,那我的代码就达不到要求了,但是就算向你那样,把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)">后,也满足不了要求啊!
      

  6.   

    1 将setState调用放在<span id = '10'>就文本2</span> 的span 里面。 可以将光标定位到"就文本"上,而且触发onmouseover事件,显示  “回复|转发|更多操作”
    2 innerHtml 也许不能这样直接调用onclick事件,也许就是根本不支持,这个我也不太清楚。你可以换一个方法来写。比如用div隐藏,就是css 的。obj.style.display="none"; 和obj.style.display="";。obj 可以是很多类型的。 类似于这种办法的。
    关于2 的话,我会继续查资料看的,如果 2 的问题找到了解决办法,也告诉我一声啊
    晚安
      

  7.   

    问题原因找到了.原来是因为JS的一个bug.在<div>层中,当鼠标在其上时响应onmouseover消息,当鼠标在其内部的标签里面时,它会响应onmouseout消息.多么杯具的事情啊
      

  8.   

    你说的第二个问题我有点看不懂啊.我才学习JS,就发现了一个这么严重的bug.Google上有很多解决方案,照着做还是有问题.我这个比较复杂,主要是层里面套了层(有几层要处理).这个东西花费了我两天的时间,结果还是有高人的指点.哎,真没有想过是JS的BUG.
      

  9.   

    还不够清楚呀?就是我有一个层:<div onmouseout onmouseover><table><td<tr><span>文本内容</span></tr></td><table></div>,当我鼠标放在层上时,响应onmouseover这没问题吧?然后我就响应这个消息,把<span>里面在增加多个<span>,结果东西增加好了(我可以利用document.getElementById(id).outerHTML来进行查看.)但是当我鼠标放在刚增加的span里面的内容时,他就响应了onmouseout消息.Google上说是因为JS的一个bug,我测试了一下,原来确实是,但是要怎么解决呢?网上也有一些解决办法.就是举了一个例子来说明解决办法,但是我这个却不能成功.可能是我的层里面的标签太多了吧!现在应该清楚了吧
      

  10.   

    document.getElementById(s).innerHTML="<span>回复</span>|<span OnClick=...>转发</span>|<span>更多操作</span>";
    这个click出来了嘛?