听说CSDN上面有很多热心朋友,也有很多高手,第一次提问希望能解决我的难题先谢了!!
思路是这样的页面上有很多超联结,当onmouseover超联结的时候,显示隐藏层,层获取超联结上传过来的主键如id,层根据id查数据库中与之对应的值并显示出来!简单的说是有很多联结,鼠标放到不同联结上层就显示此联结对应后台数据库的值 
很伤心…都怪自已太菜…非常感谢能帮助我的朋友 
下面是我用dreamweaver做的层中aaaaaa就是鼠标放上去要显示的值,但这个值是静态的,我想要从数据库中获取。不知道我有没有表述清楚,请多批评 
!<%@ page contentType="text/html; charset=big5" language="java" import="java.sql.*" errorPage="" %> 
<%@ include file="../Connections/sckb.jsp" %> 
<% 
Driver DriverRecordset1 = (Driver)Class.forName(MM_sckb_DRIVER).newInstance(); 
Connection ConnRecordset1 = DriverManager.getConnection(MM_sckb_STRING,MM_sckb_USERNAME,MM_sckb_PASSWORD); 
PreparedStatement StatementRecordset1 = ConnRecordset1.prepareStatement("SELECT idd1 FROM dbo.jilu WHERE idd<21"); 
ResultSet Recordset1 = StatementRecordset1.executeQuery(); 
boolean Recordset1_isEmpty = !Recordset1.next(); 
boolean Recordset1_hasData = !Recordset1_isEmpty; 
Object Recordset1_data; 
int Recordset1_numRows = 0; 
%> 
<% 
int Repeat1__numRows = 10; 
int Repeat1__index = 0; 
Recordset1_numRows += Repeat1__numRows; 
%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=big5" /> 
<title>无标题文件</title> 
<style type="text/css"> 
<!-- 
#Layer1 { 
position:absolute; 
width:200px; 
height:115px; 
z-index:1; 

--> 
</style> 
<script type="text/JavaScript"> 
<!-- 
function MM_findObj(n, d) { //v4.01 
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { 
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} 
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; 
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); 
if(!x && d.getElementById) x=d.getElementById(n); return x; 
} function MM_showHideLayers() { //v6.0 
var i,p,v,obj,args=MM_showHideLayers.arguments; 
for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2]; 
if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; } 
obj.visibility=v; } 

//--> 
</script> 
</head> <body> 
<table width="124" border="1"> 
<tr> 
<% while ((Recordset1_hasData)&&(Repeat1__numRows-- != 0)) { %> 
<td onmouseover="MM_showHideLayers('Layer1','','show')" onmouseout="MM_showHideLayers('Layer1','','hide')"><%=(((Recordset1_data = Recordset1.getObject("idd1"))==null || Recordset1.wasNull())?"":Recordset1_data)%></td> 
<% 
Repeat1__index++; 
Recordset1_hasData = Recordset1.next(); 

%> 
</tr> 
</table> 
<div id="Layer1">aaaaaa</div> 
</body> 
</html> 
<% 
Recordset1.close(); 
StatementRecordset1.close(); 
ConnRecordset1.close(); 
%>在BAIDU知道问了,有朋友这样回答:
我这个还不简单?首先查询出需要的数据保存到记录集中,然后将aaaa用一段jsp语句代替,这个jsp语句将记录集中需要的数据写到这里。 也就是说,你在前面加一段查询数据库的代码,然后在每个层中用jsp将数据放进去就可以了。 
但这不是我想要的啊
问题补充:不是一个超连接对应一个层哦!是所有的连接都调用一个层。最好是能附上代码。谢谢!

解决方案 »

  1.   

    代码真乱,呵呵!
    首先你这个层Layer1里面既然是绑定数据库查询结果的,肯定是要在不刷新页面的情况下发送Ajax请求到后台向数据库请求信息,在Ajax的回调方法中通过Js让层出现,填充Ajax回复的数据库请求数据。没啥难度,不过就是要加一个Ajax而已!推荐你使用Dwr,是一个Ajax框架,做这种需求非常简单。
      

  2.   

    js脚本
    document.getElementById('Layer1').innerHTML="你从数据库中度的数据就可以了";
      

  3.   


    <td onmouseover="document.getElementById('Layer1').innerHTML=this.innerHTML">
      

  4.   

    完全没有必要使用Dreamweaver生成的那些代码MM_findObj
      

  5.   

    1. 先用 JavaScript 获取页面中所有 a 标签对应的 DOM 对象,用 document.getElementsByTagName("a");
    2. 然后遍历 1 中获取到的 a 标签集合,通过 e.onmouseover = function() { /**/ }; 给每个连接加上 mouseover 事件处理代码
    3. 在上面方法里作层的显隐操作。yourLayer.style.display = "block"; /*显示*/ yourLayer.style.display = "none"; /*隐藏*/
      

  6.   


    这只是静态的显示,楼主想动态的显示啊!
    上面的方法除非是数据已经都传到了页面的div上,还设置yourLayer.style.display = "none"; /*隐藏*/,在根据上面的方法就可以了。我想这里用ajax应该更好!
      

  7.   


    那就在 function() {} 里加上 AJAX 动态获取信息的代码,再 yourLayer.innerHTML = ajaxResponseText; 不是 AJAX 更好,是要再加上 AJAX 的部分!
      

  8.   

    感谢大家的回答﹗ 我要结贴时才发现其实CSDN上结贴给分差不多就是我想要的那种功能了﹗只不过就是用层来做而已
    感觉自已太菜准备努力努力学习了