js获取url中指定参数的值(兼容hash)

js获取url中指定参数的值(兼容hash),第1张

示例:

*URL: https://www.baidu.com/?name=21002492_21_hao_pg

window.location和document.location互相等价的,可以交换使用

location的8个属性都是可读写的,但是只有href与hash的写才有意义。例如改变location.href会重新定位到一个URL,而修改location.hash会跳到当前页面中的anchor(<a id="name">或者<div id="id">等)名字的标记(如果有),而且页面不会被重新加载

注意

URL: https://www.baidu.com/?name=21002492_21_hao_pg#test?test1=1

search:"?name=21002492_21_hao_pg" 第一个"?"之后

hash:"#test?test1=1"第一个"#"之后的内容

注意上面的search和hash的区别,如果URL中“?”之前有一个“#”比如:“ https://www.baidu.com/#/test?name=21002492_21_hao_pg ”那么使用window.location.search得到的就是空(“”)。因为“?name=21002492_21_hao_pg”串字符是属于“#/test?name=21002492_21_hao_pg”这个串字符的,也就是说查询字符串search只能在取到“?”后面和“#”之前的内容,如果“#”之前没有“?”search取值为空。

现在前端会使用大量的框架来搭建前端页面应用,比如vue,当开启hash模式的时候,在实例外部方法无法使用this.$route时,老方法window.location.search也获取不到,这时需要使用window.location.hash来获取参数

兼容hash模式与非hash模式的方法:

function getUrlVars()

{

var vars = [], hash

var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&')//获取一个url的参数(?后面的 用&分割) 变成数组

for(var i = 0i <hashes.lengthi++)//数组循环

{

hash = hashes[i].split('=')//一个参数 例如a=4

vars.push(hash[0])//hash数组添加a

vars[hash[0]] = hash[1]//赋值vars[a] 值为4

}

return vars//返回hash数组

}

function format_number(pnumber,decimals){

if (isNaN(pnumber)) { return 0}//pnumber 空 返回0

if (pnumber=='') { return 0}//pnumber 空 返回0

var snum = new String(pnumber)//转换为string

var sec = snum.split('.')//.分割为数组

var whole = parseFloat(sec[0])//转换为float

var result = ''

if(sec.length >1){

var dec = new String(sec[1])

dec = String(parseFloat(sec[1])/Math.pow(10,(dec.length - decimals)))//转换

dec = String(whole + Math.round(parseFloat(dec))/Math.pow(10,decimals))//转换

var dot = dec.indexOf('.')//获取第一个.的位置

if(dot == -1){//如果没有点

dec += '.'//后边加个点

dot = dec.indexOf('.')//再获取第一个点的位置

}

while(dec.length <= dot + decimals) { dec += '0'}//dec长度小于等于后面的 就加0 直到长度比后边大

result = dec//赋值

} else{

var dot

var dec = new String(whole)//转换string

dec += '.'//后边加点

dot = dec.indexOf('.') //获取第一个点位置

while(dec.length <= dot + decimals) { dec += '0'}//dec长度小于等于后面的 就加0 直到长度比后边大result = dec

}

return result//返回值

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11751450.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存