新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 关于 XML 的一般性技术讨论,提供 XML入门资料 和 XML教程
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 XML基础 』 → 求助:关于XML建立树形菜单的问题 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 6543 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 求助:关于XML建立树形菜单的问题 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     tuxiaohui 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:7
      积分:99
      门派:XML.ORG.CN
      注册:2008/6/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给tuxiaohui发送一个短消息 把tuxiaohui加入好友 查看tuxiaohui的个人资料 搜索tuxiaohui在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看tuxiaohui的博客楼主
    发贴心情 求助:关于XML建立树形菜单的问题

    各位老大,帮帮忙,我有如下格式的XML:
    <?xml version='1.0'?>
    <list Name='设备列表'>
     <parent Name='DTU设备' open='false' ID=''>
      <first Name='广东省DTU' open='false' ID=''>
       <second Name='D广州市' open='false' ID=''>
        <third Name='D花都区' ID=''></third>
        <third Name='D天河区' ID=''></third>
        <third Name='D越秀区' ID=''></third>
       </second>
       <second Name='D深圳市' open='false' ID=''>
        <third Name='D宝安区' ID=''></third>
        <third Name='D福田区' ID=''></third>
        <third Name='D罗湖区' ID=''></third>
        <third Name='D盐田区' ID=''></third>
        <third Name='D罗湖区' ID=''></third>
        <third Name='D盐田区' ID=''></third>
        <third Name='D罗湖区' ID=''></third>
        <third Name='D盐田区' ID=''></third>
       </second>
       <second Name='D佛山市' open='false' ID=''>
        <third Name='顺德区' ID=''></third>
        <third Name='禅城区' ID=''></third>
       </second>
      </first>
     </parent>
     <parent Name='Router设备' open='false' ID=''>
      <first Name='广西省Router' open='false' ID=''>
       <second Name='R南宁市' ID=''></second>
       <second Name='R贵港市' open='false' ID=''>
        <third Name='R平南县' ID=''></third>
       </second>
       <second Name='R桂林市' open='false' ID=''>
        <third Name='R区县1' ID=''></third>
        <third Name='R区县2' ID=''></third>
        <third Name='R区县3' ID=''></third>
       </second>
      </first>
     </parent>
    </list>

    我把它放在一个字符串变量里面:var str="...上面这个XML....";
    现在我用JS对XML操作,使这个包含XML的字符串成一个树形菜单,并可以一层层的展开和收缩。由于ID是随机的,不能用ID来判断,只能判断当前节点下有没有子节点,我在网上看说用hasChildNodes(),但不知道如何具体实现
    请各位老大指点指点,如果哪位写好代码能发到我的邮箱里:notebook034@gmail.com
    小弟感激不尽,先谢谢各位了

       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/6/17 10:21:00
     
     Qr 帅哥哟,离线,有人找我吗?
      
      
      威望:9
      等级:博士二年级(版主)
      文章:4392
      积分:29981
      门派:XML.ORG.CN
      注册:2004/5/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Qr发送一个短消息 把Qr加入好友 查看Qr的个人资料 搜索Qr在『 XML基础 』的所有贴子 访问Qr的主页 引用回复这个贴子 回复这个贴子 查看Qr的博客2
    发贴心情 
    参考:
    boolValue = xmlDoc.documentElement.hasChildNodes();
    alert(boolValue);

    ----------------------------------------------
    没人帮忙,那就靠自己,自己才是最好的老师!本人拒绝回答通过站内短消息提出的问题!

    blog:http://Qr.blogger.org.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/6/17 12:24:00
     
     tuxiaohui 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:7
      积分:99
      门派:XML.ORG.CN
      注册:2008/6/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给tuxiaohui发送一个短消息 把tuxiaohui加入好友 查看tuxiaohui的个人资料 搜索tuxiaohui在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看tuxiaohui的博客3
    发贴心情 
    就是判断他是否有子节点,一直向下查找是吗?
    但是服务器传给我的是一个xml格式的字符串,我需要把这个字符串解析出来然后生成一个树,能否给个具体的代码啊?谢谢了
    这样写就可以:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE> DSTree </TITLE>
    <META NAME="Author" CONTENT="sTarsjz@hotmail.com" >
    <style>
    body,td{font:12px verdana}
    #treeBox{background-color:#fffffa;}
    #treeBox .ec{margin:0 5 0 5;}  /*树形图标样式*/
    #treeBox .hasItems{font-weight:bold;height:20px;padding:3 6 0 6;margin:2px;cursor:hand;color:#555555;border:1px solid #fffffa;}
    #treeBox .Items{height:20px;padding:3 6 0 6;margin:1px;cursor:hand;color:#555555;border:1px solid #fffffa;}
    </style>
    <!--<base href="http://vip.5d.cn/star/dstree/" />-->
    <script>
    //code by star 20003-4-7
    var HC = "color:#990000;border:1px solid #cccccc";  //鼠标移动到节点上的样式
    var SC = "background-color:#efefef;border:1px solid #cccccc;color:#000000;";  //鼠标点击后的样式
    var IO = null;
    function initTree()
    {
     var rootn = document.all.menuXML.documentElement; //documentElement返回文档的根节点
     var sd = 0;
     document.onselectstart = function()
     {
      return false;
     }
     document.all.treeBox.appendChild(createTree(rootn,sd));  //appendChild:加上一个节点当作指定节点最后的子节点。
    }
    function createTree(thisn,sd)
    {
     var nodeObj = document.createElement("span");
     var upobj = document.createElement("span");
     with(upobj)
     {
      style.marginLeft = sd*10;
      className = thisn.hasChildNodes()?"hasItems":"Items";
      innerHTML = "<img src=expand.gif class=ec>" + thisn.getAttribute("Name") +"";
      onmousedown = function()
      {
       if(event.button != 1) return;
       if(this.getAttribute("cn"))
       {
        this.setAttribute("open",!this.getAttribute("open"));
        this.cn.style.display = this.getAttribute("open")?"inline":"none";
        this.all.tags("img")[0].src = this.getAttribute("open")?"contract.gif":"expand.gif";
       }
       if(IO)
       {
        IO.runtimeStyle.csstext = "";
        IO.setAttribute("selected",false);
       }
       IO = this;
       this.setAttribute("selected",true);
       this.runtimeStyle.csstext = SC;
      }
      onmouseover = function()
      {
       if(this.getAttribute("selected"))return;
       this.runtimeStyle.csstext = HC;
      }
      onmouseout = function()
      {
       if(this.getAttribute("selected"))return;
       this.runtimeStyle.csstext = "";
      }
      oncontextmenu = contextMenuHandle;
      onclick = clickHandle;
     }

     if(thisn.getAttribute("ID") != null)
     {
      upobj.setAttribute("ID",thisn.getAttribute("ID"));
     }
     nodeObj.appendChild(upobj);
     nodeObj.insertAdjacentHTML("beforeEnd","<br>")
     if(thisn.hasChildNodes())  //hasChildNodes():如果指定的节点有一个或更多子节点,传回值为true
     {
      var i;
      var nodes = thisn.childNodes;  //childNodes传回一个节点清单,包含该节点所有可用的子节点
      var cn = document.createElement("span"); //createElement建立一个指定名称的元素span
      upobj.setAttribute("cn",cn);  //setAttribute添加一个新的属性 ,setAttribute("属性名","属性值")
      if(thisn.getAttribute("open") != null)  //getAttribute取得设定的属性值即open的值
      {
       upobj.setAttribute("open",(thisn.getAttribute("open")=="true"));
       upobj.getAttribute("cn").style.display = upobj.getAttribute("open")?"inline":"none";
       if( !upobj.getAttribute("open"))upobj.all.tags("img")[0].src ="contract.gif";
      }
      for(i=0;i<nodes.length;cn.appendChild(createTree(nodes[i++],sd+1)));
      nodeObj.appendChild(cn);
     }
     else
     {
      upobj.all.tags("img")[0].src ="endnode.gif";
     }
     return nodeObj;
    }
    window.onload = initTree;
    function clickHandle()
    {
    }
    function contextMenuHandle()
    {
     event.returnValue = false;
     var ID = this.getAttribute("ID");
    }
    </script>
    </HEAD>
    <BODY>
    <xml id=menuXML>
    <?xml version='1.0'?>
    <list Name='设备列表'>
     <parent Name='DTU设备' open='false' ID=''>
      <first Name='广东省DTU' open='false' ID=''>
       <second Name='D广州市' open='false' ID=''>
        <third Name='D花都区' ID=''></third>
        <third Name='D天河区' ID=''></third>
        <third Name='D越秀区' ID=''></third>
       </second>
       <second Name='D深圳市' open='false' ID=''>
        <third Name='D宝安区' ID=''></third>
        <third Name='D福田区' ID=''></third>
        <third Name='D罗湖区' ID=''></third>
        <third Name='D盐田区' ID=''></third>
        <third Name='D罗湖区' ID=''></third>
        <third Name='D盐田区' ID=''></third>
        <third Name='D罗湖区' ID=''></third>
        <third Name='D盐田区' ID=''></third>
       </second>
       <second Name='D佛山市' open='false' ID=''>
        <third Name='顺德区' ID=''></third>
        <third Name='禅城区' ID=''></third>
       </second>
      </first>
     </parent>
     <parent Name='Router设备' open='false' ID=''>
      <first Name='广西省Router' open='false' ID=''>
       <second Name='R南宁市' ID=''></second>
       <second Name='R贵港市' open='false' ID=''>
        <third Name='R平南县' ID=''></third>
       </second>
       <second Name='R桂林市' open='false' ID=''>
        <third Name='R区县1' ID=''></third>
        <third Name='R区县2' ID=''></third>
        <third Name='R区县3' ID=''></third>
       </second>
      </first>
     </parent>
    </list>
    </xml>
    <table style="position:absolute;left:100;top:100;">
    <tr><td id=treeBox style="width:400px;height:200px;border:1px solid #cccccc;padding:5 3 3 5;" valign=top></td></tr>
    </table>
    </BODY>
    </HTML>

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/6/17 14:52:00
     
     tuxiaohui 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:7
      积分:99
      门派:XML.ORG.CN
      注册:2008/6/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给tuxiaohui发送一个短消息 把tuxiaohui加入好友 查看tuxiaohui的个人资料 搜索tuxiaohui在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看tuxiaohui的博客4
    发贴心情 
    但是服务器返回给我的xml格式我必须放在一个字符串里面,请问如果我用
    var str="
    <?xml version='1.0'?>
    <list Name='设备列表'>
    <parent Name='DTU设备' open='false' ID=''>
      <first Name='广东省DTU' open='false' ID=''>
       <second Name='D广州市' open='false' ID=''>
        <third Name='D花都区' ID=''></third>
        <third Name='D天河区' ID=''></third>
        <third Name='D越秀区' ID=''></third>
       </second>
       <second Name='D深圳市' open='false' ID=''>
        <third Name='D宝安区' ID=''></third>
        <third Name='D福田区' ID=''></third>
        <third Name='D罗湖区' ID=''></third>
        <third Name='D盐田区' ID=''></third>
        <third Name='D罗湖区' ID=''></third>
        <third Name='D盐田区' ID=''></third>
        <third Name='D罗湖区' ID=''></third>
        <third Name='D盐田区' ID=''></third>
       </second>
       <second Name='D佛山市' open='false' ID=''>
        <third Name='顺德区' ID=''></third>
        <third Name='禅城区' ID=''></third>
       </second>
      </first>
    </parent>
    <parent Name='Router设备' open='false' ID=''>
      <first Name='广西省Router' open='false' ID=''>
       <second Name='R南宁市' ID=''></second>
       <second Name='R贵港市' open='false' ID=''>
        <third Name='R平南县' ID=''></third>
       </second>
       <second Name='R桂林市' open='false' ID=''>
        <third Name='R区县1' ID=''></third>
        <third Name='R区县2' ID=''></third>
        <third Name='R区县3' ID=''></third>
       </second>
      </first>
    </parent>
    </list>"
    我把这个XML文档放在字符串里面就不知道怎么解决了,请问如何解决呢?????
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/6/17 14:54:00
     
     Qr 帅哥哟,离线,有人找我吗?
      
      
      威望:9
      等级:博士二年级(版主)
      文章:4392
      积分:29981
      门派:XML.ORG.CN
      注册:2004/5/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Qr发送一个短消息 把Qr加入好友 查看Qr的个人资料 搜索Qr在『 XML基础 』的所有贴子 访问Qr的主页 引用回复这个贴子 回复这个贴子 查看Qr的博客5
    发贴心情 
    前面只是讲hasChildNodes()的用法,如果你要检测任意节点是否有子节点,可以用
    var o = document.getElementsByTagName("目标节点名")
    取得一个节点集,然后用for循环检测 o[i].hasChildNodes() 就可以知道特定节点是否存在子节点了。

    var str="...上面这个XML....";
    这样做的话,返回XML就没有什么意义了。况且,处理这种格式的字符串根本不能和XML比较,我真的无法理解。实际上我也没有试过如何放。

    XMHTTP可通过responseText返回字符串形式的响应信息,你可以直接将其赋给变量,用responseXML就必须进行转换,具体待进一步测试才知道。

    ----------------------------------------------
    没人帮忙,那就靠自己,自己才是最好的老师!本人拒绝回答通过站内短消息提出的问题!

    blog:http://Qr.blogger.org.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/6/17 18:48:00
     
     Qr 帅哥哟,离线,有人找我吗?
      
      
      威望:9
      等级:博士二年级(版主)
      文章:4392
      积分:29981
      门派:XML.ORG.CN
      注册:2004/5/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Qr发送一个短消息 把Qr加入好友 查看Qr的个人资料 搜索Qr在『 XML基础 』的所有贴子 访问Qr的主页 引用回复这个贴子 回复这个贴子 查看Qr的博客6
    发贴心情 
    在IE下
    alert(xmlDoc.xml.toString())
    返回了XML形式的字符串
    但FF好象不行,得另寻他法,找到了别忘了在这里回贴告诉我。

    ----------------------------------------------
    没人帮忙,那就靠自己,自己才是最好的老师!本人拒绝回答通过站内短消息提出的问题!

    blog:http://Qr.blogger.org.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/6/17 19:00:00
     
     tuxiaohui 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:7
      积分:99
      门派:XML.ORG.CN
      注册:2008/6/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给tuxiaohui发送一个短消息 把tuxiaohui加入好友 查看tuxiaohui的个人资料 搜索tuxiaohui在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看tuxiaohui的博客7
    发贴心情 
    我用了一个其他方法,不过有点小问题,请帮忙解决一下,先谢了:)
    <!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=gb2312" />
    <title>XML生成树状菜单</title>
    <style type="text/css">
    #TreeMenu {
     font-size: 12px;
     width: 200px;
     border: 1px dashed #666666;
     padding: 10px;
    }
    #TreeMenu a
    {
     color: #666666;
     text-decoration: none;
    }
    #TreeMenu a:hover
    {
     color: #666666;
     text-decoration: underline;
    }
    #TreeMenu b
    {
     color: #333333;
    }
    </style>
    <script type="text/javascript">
    function toXML(strxml)
    {
      try
      {
         var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
      xmlDoc.async = false;
         xmlDoc.loadXML(strxml);
      }
      catch(e)
      {
         var oParser=new DOMParser();
         xmlDoc=oParser.parseFromString(strxml,"text/xml");
      }
      return xmlDoc;
    }
    var str="<\?xml version='1.0'\?>
    <list>
     <parent Name='DTU设备'>
      <first Name='D广东省' ID=''>
       <second Name='D深圳市' ID=''>
        <third Name='D福田区' ID='#'></third>
                 <third Name='D宝安区' ID='#'></third>
                 <third Name='D罗湖区' ID='#'></third>
       </second>
       <second Name='D广州' ID=''>
                 <third Name='D越秀区' ID='#'></third>
       </second>
      </first>
            <first Name='D广西省' ID='#'>
       <second Name='D贵港市' ID='#'></second>
       <second Name='D南宁市' ID='#'></second>
            </first>
            <first Name='D湖南省' ID='#'></first>
     </parent>
     <parent Name='Router设备'>
      <first Name='R广东省' ID='#'>
       <second Name='R广州市' ID='#'></second>
       <second Name='R佛山市' ID='#'></second>
            </first>
     </parent>
     <parent Name='Vurleo设备'>
      <first Name='V湖南省' ID='#'></first>
     </parent>
    </list>";
    var xmlDoc=toXML(str);
    var rootNode= xmlDoc.documentElement.lastChild;
    //返回树形结构的HTML代码,参数node为节点名,level为当前节点相对于根节点的深度值
    function BuilderTree(nodeName,level)
    {
     //子菜单项,缩进的像素数
     var indent=10;
     var temp="";
     level=level==null ? 0 : level;
     var nodes=nodeName.childNodes;
     for(var i=0;i<nodes.length;i++)
     {
      //当该节点没下级节点时
      if(nodes[i].childNodes.length<1)
      {
      //当前菜单的名称
      temp+="<div id='"+nodes[i].getAttribute("ID")+"' style='margin-left:"+level*indent+"px;cursor:hand;''>";
      temp+="<b>-</b> ";
      temp+=nodes[i].getAttribute("Name");
      temp+="</div>";
      continue;
      }
      //当前菜单的名称
      temp+="<div id='"+nodes[i].getAttribute("ID")+"' style='margin-left:"+level*indent+"px;cursor:hand;' onclick='show(this)'>";
      temp+="<b>+</b> <b>"+nodes[i].getAttribute("Name")+"</b>";
      temp+="</div>";
      //当前菜单的下级内容
      temp+="<div style='margin-left:"+indent+"px;cursor:hand;display:none'>";
      temp+=BuilderTree(nodes[i],level+1);
      temp+="</div>";
     }
     return temp;
    }

    //操作某个节点的下一节点nextSibling是否显示;
    function show(obj)
    {
     //当前节点的下一节点
     var nextNode=obj.nextSibling;
     //当前节点的头部符号节点,就是菜单项前面+、-号
     var subNode=obj.firstChild.firstChild;
     if(nextNode.nodeType==1)
     {
      with(eval(nextNode))
      {
        if(style.display=="")
        {
         style.display="none";
         subNode.nodeValue="+";
        }else
        {
         style.display="";
         subNode.nodeValue="-";
        }
      }
     }
    }
    </script>
    <script type="text/javascript" language="javascript" defer="defer">
    //将处理过的XML数据,插入到页面的相应位置
    var d=document.getElementById("TreeMenu");
    d.innerHTML=BuilderTree(rootNode);
    </script>
    </head>
    <body>
    <div id="TreeMenu"></div>
    </body>
    </html>

    用xmlDoc方法解析这个字符串在调用BuildTree的时候就提示rootNode未定义,使用外部引用一个xml文档解析就可以:
    //建立XMLdom对象,并载入xml,xmlFilePath为xml的文本路径
    function CreateXMLDoc(xmlFilePath)
    {
     if(window.ActiveXObject)
     {
      //获得操作的xml文件的对象
      var msXMLdom = new ActiveXObject('Microsoft.XMLDOM');
      msXMLdom.async = false;
      msXMLdom.load(xmlFilePath);
      return msXMLdom;
     }
     else
     {
      var oXmlHttp = new XMLHttpRequest() ;
      oXmlHttp.open( "GET", xmlFilePath, false ) ;
      oXmlHttp.send(null) ;
      return oXmlHttp.responseXML;
     }
    }

    var xmlDoc;
    xmlDoc=CreateXMLDoc("menu.xml");
    var rootNode=xmlDoc.lastChild; //确认目前节点中最后的子元素

    但是服务器端传给我的是一个xml格式的字符串,麻烦老大帮忙看看,先谢谢了

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/6/18 9:37:00
     
     Qr 帅哥哟,离线,有人找我吗?
      
      
      威望:9
      等级:博士二年级(版主)
      文章:4392
      积分:29981
      门派:XML.ORG.CN
      注册:2004/5/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Qr发送一个短消息 把Qr加入好友 查看Qr的个人资料 搜索Qr在『 XML基础 』的所有贴子 访问Qr的主页 引用回复这个贴子 回复这个贴子 查看Qr的博客8
    发贴心情 
    你发在7楼的代码,其中的var str="XML串"根本行不通,不信你用alert(str)看看,是否有返回。既然服务器返回XML形式的字符串,你loadXML()中的参数应该是返回结果,而不应该将结果赋给变量再loadXML()。在这里,你要明确这个XML形式的结果如何得来,这才是问题的关键。

    ----------------------------------------------
    没人帮忙,那就靠自己,自己才是最好的老师!本人拒绝回答通过站内短消息提出的问题!

    blog:http://Qr.blogger.org.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/6/18 13:41:00
     
     tuxiaohui 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:7
      积分:99
      门派:XML.ORG.CN
      注册:2008/6/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给tuxiaohui发送一个短消息 把tuxiaohui加入好友 查看tuxiaohui的个人资料 搜索tuxiaohui在『 XML基础 』的所有贴子 引用回复这个贴子 回复这个贴子 查看tuxiaohui的博客9
    发贴心情 
    已经解决了,谢谢Qr
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/6/20 8:51:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XML基础 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/9/9 7:00:03

    本主题贴数9,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    250.000ms