层的问题 关于 显示/隐藏

Larrystudy 2005-06-22 02:51:36
在下面的例子中,如果同时出现两个或两个以上的 A 连接,那么,当别人不去点击出现的层时,会导致几个层都不隐藏的问题,该如何解决?

**************请大家给予指点-----------

<html>
<script langugae='javascritp'>

function OverIt(obj){
eval("var mdata = document.all.div" + obj.substr(6,1) + ".style.display");
clearTimeout(mhandle);
if(mdata == "") return;
eval('document.all.div' + obj.substr(6,1) + '.style.left=window.event.x');
eval('document.all.div' + obj.substr(6,1)) ;
document.all.div2.style.display='';// (这句可以实现层的显示)
eval("document.all.div" + obj.substr(6,1) + ".style.display=''"); //(这句不可以,一样的结果)
}
var _setTimeout1 = window.setTimeout;
function _setTimeout(fRef, mDelay)
{
if(typeof fRef == 'function')
{
var argu = Array.prototype.slice.call(arguments,2);
var f = (function(){ fRef.apply(null, argu); });
return _setTimeout1(f, mDelay);
}
return _setTimeout1(fRef,mDelay);
}
var mhandle = null;
function OutIt(obj){
clearTimeout(mhandle);
mhandle = _setTimeout(OutIt1,100,obj);
}
function OutIt1(obj){

eval("document.all.div" + obj.substr(6,1) + ".style.display='none'");
}
function show_msg(mtd)
{
alert(mtd.innerHTML);
}
</script>

<body>

<div onmousemove='OverIt("A_Link2")' onmouseout='OutIt("A_Link2")' id=div2 style='position:absolute;display:none;'>
<table border=1 cellpadding='0' cellspacing='0' width=200>
<tr><td onclick='show_msg(this)'>罗技</td></tr>
</table>
<table border=1 cellpadding='0' cellspacing='0'>
<tr><td onclick='show_msg(this)'>福晶</td></tr>
</table>
</div>
<p><p><p>
<table width=180 border=1 cellpadding=0 cellspacing=0>
<tr><td width=30 height=22><div align=center><img src=images/topBar_bg.gif width=11 height=11></div></td>
<td width=150><a href='Product.asp?BigClassName=键盘系列' id='A_Link2' onmousemove='OverIt(this.id)' onmouseout='OutIt(this.id)'>键盘系列</a></td>
</tr>
</table>


<div onmousemove='OverIt("A_Link3")' onmouseout='OutIt("A_Link3")' id=div3 style='position:absolute;display:none;'>
<table border=1 cellpadding='0' cellspacing='0' width=200>
<tr><td onclick='show_msg(this)'>罗技</td></tr>
</table>
<table border=1 cellpadding='0' cellspacing='0'>
<tr><td onclick='show_msg(this)'>福晶</td></tr>
</table>
</div>
<p><p><p>
<table width=180 border=1 cellpadding=0 cellspacing=0>
<tr><td width=30 height=22><div align=center><img src=images/topBar_bg.gif width=11 height=11></div></td>
<td width=150><a href='Product.asp?BigClassName=鼠标系列' id='A_Link3' onmousemove='OverIt(this.id)' onmouseout='OutIt(this.id)'>鼠标系列</a></td>
</tr>
</table>

</body>
</html>

...全文
103 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Larrystudy 2005-06-24
  • 打赏
  • 举报
回复
谢谢楼上的三位.可你们都没有正面回答我的问题啊

特别是第三位,唉.我差点晕倒

只要把我的代码 COPY PASTE 就可以看到结果了.你们说的我能理解,关键是我现在该如何让我的代码能够正确的执行啊?
springwood 2005-06-23
  • 打赏
  • 举报
回复
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>

<BODY>
<TABLE id="tbDetailUsed">
<tr>
<td><input type="file" name="a" ></td>
<td><input type="file" name="b" ></td>
<td><input value="add" id="add" onclick="addDetailProcess()" type=button></td>
<td><input value="del" id="del" onclick="delDetailProcess()" type=button></td>
</tr>
<tr>
<td><input type="file" name="a" ></td>
<td><input type="file" name="b" ></td>
<td><input value="add" id="add" onclick="addDetailProcess()" type=button></td>
<td><input value="del" id="del" onclick="delDetailProcess()" type=button></td>
</tr>

</TABLE>
<SCRIPT LANGUAGE="JavaScript">
<!--


function addDetailProcess()
{
var crrentrow = event.srcElement.parentNode.parentNode.rowIndex;
var crrentrowHTML = document.all("tbDetailUsed").rows[crrentrow].innerHTML;
var newtr = document.all("tbDetailUsed").insertRow(crrentrow+1);
var newCellA = newtr.insertCell(0);
var newCellB = newtr.insertCell(1);
var newCellC = newtr.insertCell(2);
var newCellD = newtr.insertCell(3);
newCellA.innerHTML = document.all("tbDetailUsed").rows[crrentrow].cells[0].innerHTML;
newCellB.innerHTML = document.all("tbDetailUsed").rows[crrentrow].cells[1].innerHTML;
newCellC.innerHTML = document.all("tbDetailUsed").rows[crrentrow].cells[2].innerHTML;
newCellD.innerHTML = document.all("tbDetailUsed").rows[crrentrow].cells[3].innerHTML;
//newtr.innerHTML = crrentrowHTML;
}


function delDetailProcess()
{
var delRow=document.all("tbDetailUsed").deleteRow(event.srcElement.rowIndex);
}
//-->
</SCRIPT>
</BODY>
</HTML>
白夜花寒 2005-06-22
  • 打赏
  • 举报
回复
这个跟你的策略有关系的,我也没仔细看你的代码,我想你应该想的是逻辑问题,梅说的这个是有道理的,eval通常的用法是

给可变的变量的,通常大家看习惯了getelementbyid("xxx") 其实是这样的"xxx"可以用变量的
getElementById(nnn)
nnn="xxx"
或者是
a="x" nnn="xx"+a

很多人也许对request.form("xxx")也是有这样的困惑的其实道理是一样的用request.form(nnn)代替也是一样的,做程序一定不要想得太死了。。。
meizz 2005-06-22
  • 打赏
  • 举报
回复
没有细看你的代码, 不过你的eval显然不是最好的代码:
eval("var mdata = document.all.div" + obj.substr(6,1) + ".style.display");
==>
var mdata = document.getElementById("div"+ obj.substr(6, 1)).style.display;

//若是不考虑浏览器兼容性的话你也可以用:
var mdata = document.all("div"+ obj.substr(6,1)).style.display;

87,923

社区成员

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

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