• javascript求相对路径


              求相对路径的思路:

               比如 

                      var path1 = "D://su/ni/you/tas/you/d.html";
                  var path2 = "D://su/ni/you/tas/b.html";

                如果相对于path1求path2的相对路径,去掉"D://",将剩下的字符串转为数组。

                p1 = ['su','ni','you','tas','you','d.html']    p2 = ['su','ni','you','tas','b.html']

                然后for循环,依次比较p1和p2的元素,例子中,p1[4] != p2[4]   那么d.html要向上走p1.length - 4 值为2.

               也就是   ../../  。p2[4] 的值为 b.html   。 将两者进行拼接, ../../b.html  就是path1相对于path2的相对路径。

               ps 记得要对盘符进行判断,如果不在同一个盘符,那也就没有相对路径一说了。以下是具体实现代码。

    <script>
        var path1 = "D://su/ni/you/tas/you/d.html";
        var path2 = "D://su/ni/you/tas/b.html";
        //求path1 相对于 path2 的相对路径。  ../../you/tas/b.html
        function contrast(p1,p2){
            if(p1.substr(0,1).toUpperCase() != p2.substr(0,1).toUpperCase()){
                   return "不在同一个根目录";
            }
            var arrPath1 = p1.substr(4).split('/');
            var arrPath2 = p2.substr(4).split('/');
            for(var i=0;i<path1.length;i++){
                  console.log(i);
                if(arrPath1[i] != arrPath2[i]){
                    if(arrPath1.length - i > 1){
                          var str = '';
                        
                          for(var j=0;j<arrPath1.length-i;j++){
                                str += '../';
                          }
                          str += arrPath2.slice(i).join("/");
                    }
                    if(arrPath1.length - i == 1){
                        var str="./";
                        str += arrPath2[i];
                    }
                   return str;
                }
            }
        }
        console.log(contrast(path1,path2));
    </script>
  • 相关阅读:
    ASP.NET中的Eval与DataBinder.Eval()方法
    数据库三范式
    某一公司的面试题目
    Gridview样式
    截取字符串代码
    C#文件IO操作
    随机生成验证码
    HTTP 错误 401.2 Unauthorized 由于身份验证头无效,您无权查看此页。 IIS7.0解决办法
    危险字符过滤的类
    asp.net面试题新手必备
  • 原文地址:https://www.cnblogs.com/sujianfeng/p/8560785.html
Copyright © 2020-2023  润新知