郁闷,innerHTML生成的二级菜单点击无法送数据出来.(已解决)
我用:<br> document.getElementById(tdid).innerHTML+="<div align='left' style='padding-left:10px;padding-right:6px;' id="+divid+"><img src='../image/nochild.gif'><a class='d' href='"+urrl+"' onclick='return move();'><font color='#FFFFFF'> "+bbb[0]+"</font></a></div>";<br>的办法生成的二级菜单,这个getElementById(tdid)对象也是用innerHTML生成的.<br>用这个办法生成的第一级菜单可以送出正常的数据.<br>比如我要获取这个href用:event.srcElement.href可以获取.<br>但这个二级菜单就是上面的<br>我用event.srcElement.href,返回的是:undefined<br><br>说明:这个<a href='"+urrl+"' onclick='return move();'>可以很好地生成.从点击它可以进入正常页面中可以看出<br>但我是用AJAX来实现无刷新更新页面的,所以我需要获取它的href用以从ajax中送出请求.<br>请教各位大虾们,有什么办法来获取它的href啊?帮帮我啊.[em09][align=right][color=#000066][此贴子已经被作者于2007-11-21 11:10:25编辑过][/color][/align]
不会吧?没人会吗?[em09] <P><a>标签里面不要加font标签,字体颜色用<a>标签的CSS样式控制<BR>另外贴出一下相关的完整代码(HTML,js)</P> <P>晕啊,完整的,怕你没时间看啊<br>第一次玩这个AJAX,所以有点乱,特别是改来改去地,自己都乱了.<br><br><!--#include file="conn.asp"--><br><html></P>
<P><head><br><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><br><meta name="GENERATOR" content="Microsoft FrontPage 5.0"><br><link rel="stylesheet" type="text/css" href="style.css"><br><style type="text/css"><br><!--<br>--><br></style><br></head><br><%<br> const MaxPerPage=18<br> dim totalPut <br> dim CurrentPage<br> dim TotalPages<br> dim i,j<br> dim sql<br> dim rs<br> dim rstype<br> dim typesql<br> dim typeid,typename1<br> if not isEmpty(request("typeid")) then<br> typeid=request("typeid")<br> else<br> typeid=1<br> end if<br>if not isempty(request("page")) then<br> currentPage=cint(request("page"))<br> else<br> currentPage=1<br> end if<br>%><br><script language="JavaScript"><br>var mrow,nn1,zk,n3,nn2,zk2,mrow2,n4<br>zk=0;<br>zk2=0;<br>nn1=0;<br>nn2=0;<br>n3=0;<br>n4=0;<br>mrow=0;<br>mrow2=0;<br> var http_request=false;<br> function send_request(url){<br> http_request=false;<br> if (window.XMLHttpRequest){<br> http_request=new XMLHttpRequest();<br> if(http_request.overrideMimeType){<br> http_request.overrideMimeType("text/xml");<br> }<br> }else if(window.ActiveXObject){<br> try{<br> http_request=new ActiveXObject("Microsoft.XMlHTTP");<br> }catch(e){<br> }<br> }<br> if (!http_request){<br> window.alert("不能创建XMLHttpRequest对象实例!");<br> return false;<br> }<br> http_request.onreadystatechange=processRequest;<br> http_request.open("GET",url,true);<br> http_request.send(null);<br>}<br> function processRequest(){<br> if(http_request.readystate==4){<br> if (http_request.status==200){<br> if (http_request.responseText!=""){ //有请求内容<br> abc = http_request.responseText.split("!"); //把请求内容送到abc<br> if (nn2==0 ){ //如果是第一级运行以下<br> n3=abc[0] //这是返回的个数<br> if (zk==1){ //如果已经展开先合上<br> for (n=1;n<n3-0+1;n++){<br> cd.deleteRow(mrow-0);<br> }<br> nn1=0;<br> zk=0<br> }else{ //这儿开始展开<br> for (n=1;n<n3-0+1;n++){<br> bbb=abc[n].split(",");<br> row=cd.insertRow(mrow-0);<br> cell=row.insertCell(0);<br> cell.align="left";<br> urrl="kjfg.asp?newstype="+bbb[0]+"&typeid="+bbb[2]+"&n=1"<br> if (bbb[1]>0){//返回有下一级菜单的话<br><FONT color=#ff0000> cell.innerHTML="<div align='left' style='padding-left:10px;padding-right:6px;' id=div"+n+"><img src='../image/plus.gif' onclick=extendType2("+n+","+bbb[2]+") style='cursor:hand' id='TypeImg"+bbb[2]+"'><a class='d' href='"+urrl+"' onclick='return move();'> "+bbb[0]+"</a></div>";//这儿生成的是第二级菜单的主体,也就是那个document.getElementById(tdid).<br></FONT> }else{//无下一级菜单的话<br> cell.innerHTML="<div align='left' style='padding-left:10px;padding-right:6px;'><img src='../image/nochild.gif'><a class='d' href='"+urrl+"' onclick='return move();'> "+bbb[0]+"</a></div>";<br> }<br> }<br> zk=1<br> }<br> }else{ //这是第二级展开<br> n4=abc[0] //这是返回的个数<br> if (mmm) {<br> for (n=1;n<n4-0+1;n++){//说明一下,减0只是为了转换一下n4的属性.因为它是字符,减0就成了数字了.不减0如果n4为1它会成为11的<br> divid="td"+mrow2<br> del=document.getElementById(divid).removeNode(true)<br> }<br> imgid="TypeImg"+nn2<br> //alert(imgid)<br> document.getElementById(imgid).src = '../image/plus.gif'; //更改图标<br> mmm=false<br> nn2=0<br> }else{<br> imgid="TypeImg"+nn2<br> //alert(imgid)<br> document.getElementById(imgid).src = '../image/nochild.gif'; //更改图标<br> for (n=1;n<n4-0+1;n++){<br> tdid="div"+mrow2<br> bbb=abc[n].split(",");<br> divid="td"+mrow2<br> urrl="kjfg.asp?newstype="+bbb[0]+"&typeid="+bbb[2]+"&n=1"<br> //alert(urrl)<br> <FONT color=#ff0000> document.getElementById(tdid).innerHTML+="<div align='left' style='padding-left:10px;padding-right:6px;'><img src='../image/nochild.gif'><a class='d' href='"+urrl+"' onclick='return move();' id="+divid+"> "+bbb[0]+"</a></div>"; //这儿展开的是第二级的菜单,可以很好地展开,并且联接正解,只要把move中的return false去了就能转到这个联接中.</FONT><br> }<br> zk2=1<br> }}<br> }else{<br> alert("无此ID号!");<br> }<br> }else{<br> alert("您所请求的页面有异常!");<br> }<br> }<br> }<br>function extendType2(mm,nn) {//这第二级菜单的点击<br> imgid="TypeImg"+nn2<br> mrow2=mm //获取行号<br> nn2=nn //获取ID号<br> imgid="TypeImg"+nn2<br> j=document.getElementById(imgid).src.indexOf("plus.gif")<br> if(j>0){<br> mmm=false<br> send_request('extend1.asp?id='+nn) //送出请求<br> }else{<br> mmm=true<br> send_request('extend1.asp?id='+nn) //送出请求<br> }<br>}</P>
<P>function extendType1(mm,nn) {//第一级菜单的点击<br>nn2=0<br>if (nn1!=nn){ //该次点击是否与上次相同,不同运行下面的<br> if (nn1!=0){ //如果第一级已展开,那就先合上(为的是表格的序号不会)<br> imgid="TypeImg"+nn1 //获取前缀图标位置<br> document.getElementById(imgid).src = '../image/plus.gif'; //改变图标<br> for (n=1;n<n3-0+1;n++){ //循环删除添加的行<br> cd.deleteRow(mrow-0);<br> }<br> nn1=0;<br> zk=0<br> }<br> nn1=nn //项目标号<br> mrow=mm //表格行号<br> imgid="TypeImg"+nn //当然前缀图标位置<br> document.getElementById(imgid).src = '../image/nochild.gif'; //更改图标<br> send_request('extend1.asp?id='+nn) //送出请求<br>}else{ //相同只运行以下的删除<br> if (nn1!=0){<br> imgid="TypeImg"+nn1<br> document.getElementById(imgid).src = '../image/plus.gif'; <br> for (n=1;n<n3-0+1;n++){<br> cd.deleteRow(mrow-0);<br> }<br> nn1=0;<br> zk=0<br> }<br>}<br>}<br>function move() {<br><FONT color=#ff0000>alert(event.srcElement.name)//这儿如果是第二级菜单无法返回内容,第一级没问题</FONT><br>zhengshi2_obj0.location=event.srcElement.href //先偷懒,把它送到IFRAME,看以后再换<br>return false<br>}<br></script><br><body leftmargin="2" topmargin="2"><br><div align="center" class="unnamed1"><br><center><br> <div align="center"><br> <center><br> <table width="774" border="0" cellpadding="0" cellspacing="0" height="9" style="border-collapse: collapse" bordercolor="#111111"><br> <tr> <br> </tr><br> </table><br> </center><br> </div><br> <div align="center"><br> <center><br><!--#include file="bt.asp"--><br> </div><br> <div id=d5 align="center" ><br> <table width="774" border="0" cellpadding="0" cellspacing="0" height="1" style="border-collapse: collapse" bordercolor="#111111"><br> <tr> <br> <td bgcolor="#7D8AC8" width="129" height="143" valign="top"> <br> <div align="center"><br> <center> <br> <table width="140" border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" height="91"><br> <tr> <br> <td colspan="2" height="28" width="139"><br> <p align=center><font face="宋体" style="font-size: 10pt" color="#FFFF00"><a href=mymanage.asp>税法栏目</a> <a href=mymanage2.asp>会计法栏目</a></font></td><br> </tr><br> <tr> <br> <td colspan="2" height="2" width="139"></td><br> </tr><br> <tr> <br> <td height="61" width="130" valign="top"> <br> <table width="137" border="0" cellpadding="0" cellspacing="0"><br> <tr> <br> <td colspan="2" height="58" width="100%"><br> <table width=100% border="0" cellpadding="0" cellspacing="0" height="1" style="border-collapse: collapse" id="cd"><br><%<br>Set rst= Server.CreateObject("ADODB.Recordset")<br> rst.open "select * from type2 where class=0",conn,1<br>if rst.EOF then<br> response.write "没有栏目:("<br> else<br>%> <%for n=1 to rst.recordcount%><br><tr><td><img src="../image/plus.gif" onclick="extendType1('<%=n%>','<%=rst("typeid")%>')" style="cursor:hand" id="TypeImg<%=rst("typeid")%>"><a class="d" href="kjfg.asp?newstype=<%=rst("type")%>&typeid=<%=rst("typeid")%>&n=1" onclick="return move();"><%=rst("type")%></a></td></tr><br><%<br> rst.MoveNext<br> next<br> end if<br>rst.close<br>%></table> </td><br> </tr><br> </table><br> </td><br> </tr><br> </table> <br> </center><br> </div><br> <table width="75%" border="0" align="center" cellpadding="0" cellspacing="0"><br> <tr> <br> </tr><br> </table><br> </td><br> <td bgcolor="#C4C4C4" width="1" height="143"></td><br> <td colspan="2" height="143" valign="top" align="right" width="608"><br> <IFRAME id=zhengshi2_obj0 <br> src="kjfg.asp?newstype=会计法规&typeid=0&n=1" frameBorder=0 width=100% <br> height=100%></IFRAME></P>
<P> </td><br> </tr><br> </table><br> </center><br> </div><br> <div align="center"><br> <center><br> <table width="774" border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111"><br> <tr bgcolor="#304D7C"> <br> <td width="777" bgcolor="#000080" class="unnamed1" height="1"> <br> <div align="center"> </div><br> </td><br> <td width="1" valign="top" align="right" height="2"></td><br> </tr><br> </table><br> </center><br> </div><br> <script language="Javascript" src="copyright.txt"><br> </script><br> </center></div><br></body><br></html></P>
[align=right][color=#000066][此贴子已经被作者于2007-11-21 9:50:22编辑过][/color][/align]
[em05]哈哈!<BR>我已经解决了!!!<BR>document.getElementById(tdid).innerHTML+="<div align='left' style='padding-left:10px;padding-right:6px;' id="+divid+"><img src='../image/nochild.gif'><a class='d' href='"+urrl+"' onclick='return move(this.href);'><font color='#FFFFFF'> "+bbb[0]+"</font></a></div>";<BR>就可以很好地把href送出来! 还有,版主,我也不知道为什么,但在这儿,我的<font>是起作用的,所以我才用,要不起作用我才不会用呢.[em02] <font>当然是起作用的……<BR>但是在ie下,onclick事件发生后,srcElement绑定的是<font>元素<BR>这个帖子可以清楚解释这个问题<BR><a href="http://www.javaeye.com/topic/141877" target="_blank" >http://www.javaeye.com/topic/141877</A> 会有这样的事?我试试看.是不是这样的,先谢谢!
页:
[1]
