/** * 获取地址栏内容,返回pathnamearrneed对象 * @param {Object} len 从第几位开始获取你需要的值 * @param {Boolean} true 返回的是截取后的数组 */ function myLocationId(len,boolean) { var pathnamearr = location.pathname.split('/'); var length = pathnamearr.length; pathnamearr[length - 1] = pathnamearr[length - 1].replace('.html', ''); if(boolean){ return pathnamearr; } len = len ? len : 3; var pathnamearrneed = {}; for(var i = len, arrlenght = length; i < arrlenght; i += 2) { pathnamearrneed[pathnamearr[i]] = pathnamearr[i + 1]; } return pathnamearrneed; }
不知道有没有宝宝们遇到过这样的问题,后台哥哥说使用 http://域名/网页路径.html?id=1&&cid=1 使用search的地址形式太丑了,要改成 http://域名/网页路径/id/1.html 的形式。
这时候,宝宝需要用到网页路径传过来的信息,例如 id 什么的,就特别费神,所以就写了个这样的方法,来解析网址,获取需要的内容。
下面写一下这个函数的意思,以及如何使用:
1、宝宝在自家公司遇到需要解析的网站路径是这样的 http://域名/网页父级路径/网页子级路径/一级分类/一级分类id/二级分类/二级分类id.html
2、而宝宝我需要用到的内容是 一级分类id 和 二级分类id ,这时候我们所熟知的 location对象的属性就不能满足需求了,就需要自己进行解析
3、使用 location.pathname 获取的内容是 /一级分类/一级分类id/二级分类/二级分类id.html
4、通过 split('/') 将其分隔成数组,结果为 ['','一级分类','一级分类id’,'二级分类','二级分类id.html']
5、说道这里我想看到宝宝博客的童靴们都明白了吧,该方法需要传参的 length 就代表着 我需要的是 从数组第几项开始是我需要的内容,因为宝宝自家公司一般都是从第三项开始,所以不传的话 默认是从第三位开始
6、最终得到的结果是一个对象
{
'一级分类':'一级分类id',
'二级分类':'二级分类id'
}
修改1:
增加第二个参数,当传入 true 时 返回的是路径内容数组。
ps:这是本宝宝的第一篇博客,也是记录自己的成长历程,如果有更好的办法来解决这个问题,欢迎交流.....康撒米达~~古玛我~~