gfg<a href="../../../uuyyyuyu">fgf</a>gfgf<a href="./ghhgh/ghghgh" target="_blank">gfgfgfgfgf</a>gf<a href="../../yyy">gfg</a>f<script language="javascript" defer>var oInput=document.body.getElementsByTagName("A");   
for (var i=0;i<oInput.length;i++){
alert(oInput[i].href);
  
}
</script>alert(oInput[i].href);得到的是绝对连接,我想获取"../../../uuyyyuyu","./ghhgh/ghghgh"这样的值,怎么获取?

解决方案 »

  1.   

    用 replace把 你不想要的部分 用 .. 替换掉就行了啊
      

  2.   


    我需要对href的../的个数进行判断,然后处理连接,他给了我一个完整连接,我没有办法进行判断了,有可能../../../../../ddd.htm 这样的超出范围的连接,我们就没有办法获取href的真正内容
      

  3.   

    我想要是页面中href的内容再现
      

  4.   

    alert(oInput[i].outerHTML);
    然后再正则吧
      

  5.   

    正好击中要害,js默认会把href的属性补全。
    可以试试别的api,比如楼上的outHTML或者用node对象的属性来试试。
      

  6.   


    gfg<a href="../../../uuyyyuyu">fgf</a>gfgf<a href="./ghhgh/ghghgh" target="_blank">gfgfgfgfgf</a>gf<a href="../../yyy">gfg</a>f
    <div id=d1></div>
    <div id=d2></div>
    <script>
    if(!document.all){
      if(window.Element && window.Element.prototype.__defineGetter__){
        Element.prototype.__defineGetter__("outerHTML",function(){
        return (new XMLSerializer()).serializeToString(this);
      }); 
    }}
    var a=document.getElementsByTagName("A");  for(var i=0;i<a.length;i++){
      s=a[i].outerHTML;
      var re = new RegExp("<a[^>]*href=[\"\']?([^\"\' ]+)[\"\']?[^.]+>(.*)<\/a>","ig");
      re.exec(s);
      var zcyzzzm=RegExp.$1;//RegExp.$1就是你要的;
      document.getElementById("d1").innerHTML+=zcyzzzm+"<br>";  
      re=null;
    }
    </script>