js如何实现跳转传参

方法一:window.open()
(说在前面)window.open()跳转页面是打开一个新的窗口,这是与window.location的一个不同点。
使用此方法跳转的新页面获取参数的办法是使用window.opener属性,指向原页面(跳转前)的window对象。最后调用你想用的数据。
页面a跳转至页面b:
 

<html lang="en">

<head>
  <meta http-equiv="Content-type" content="text/html;charset=utf-8" />
  <title>页面a</title>
</head>

<body>
  <div>我是跳转前的页面a</div>
  <button onclick="goTo()">window.open()</button>
  <script>
    var data = ["abcd", "efg", 111];
    var id = 100001;

    function goTo() {
      window.open("b.html");
    }
  </script>
</body>

</html>​
<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-type" content="text/html;charset=utf-8" />
    <title>页面b</title>
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
</head>

<body>
    <div>我是跳转成功页面!</div>
    <div id="showData"></div>
    <script>
    var data=window.opener.data;
    var id=window.opener.id;
    $("#showData").text(data);
    $("#showData").text(id);
    </script>
</body>

</html>

方法二:window.location
使用window.location.href=""属性进行跳转,在当前页面直接跳转即可。我们在写这个url的时候要把传递的参数也写上如
window.location.href=“b.html?data=data&id=100001”
(? 是连接域名和参数的 ;& 是分隔两个参数的)
在跳转页面接受参数时使用window.location.search会返回url中"?"以及其之后的所有参数。然后再对传递的数据进行操作。
页面a跳转至页面b:
 

<html lang="en">

<head>
  <title>页面a</title>
  <meta http-equiv="Content-type" content="text/html;charset=utf-8" />
  <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
</head>

<body>
  <div>我是跳转前的页面a</div>
  <input id="text1" type="text" />
  <input type="button" value="增加data" onclick="getData()" />
  <button onclick="goTo()">window.location.href</button>
  <script>
    var data = new Array();
    var id = 100001;
    var num = 123;

    function goTo() {
      window.location.href = "b.html?data=" + data + "&id=" + id + "&num=" + num;
      alert("跳转成功");
    }

    //查看并添加传递的data
    function getData() {
      let value = $("#text1").val();
      data.push(value);
      console.log(data);
    }
  </script>
</body>


</html>​

在b页面,接收一个参数比较简单,接收多个参数可能比较麻烦,要写个循环,这里我规定的是接受的参数都放进map里,map的value我都规定的是数组。
当然也可以全写数组啊什么的,根据自己的需要写。

<!DOCTYPE html>
<html>

<head>
    <title>页面b</title>
    <meta http-equiv="Content-type" content="text/html;charset=utf-8" />
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
</head>

<body>
    <div>我是跳转成功页面!</div>
    <div id="showData"></div>
    <div id="showMap"></div>
    <script>
        var map=new Map();
        var receiveData = decodeURI(window.location.search);
        //只有一条数据时
        // var key=data.substring(data.indexOf("?")+1,data.indexOf("="));
        // var value=data.substring(data.indexOf("=")+1);
        // map.set(key,value);

        //多条数据时
        //在后面加个&是为了方便while循环
        receiveData=receiveData.substr(receiveData.indexOf("?")+1)+"&";
        //展示获取到的参数
        $("#showData").text(receiveData);
        while(receiveData!=""){
            let keyEnd=receiveData.indexOf("=");
            let valueStart=keyEnd+1;
            let valueEnd=receiveData.indexOf("&");
            //split()方法可以将字符串转为数组
            map.set(receiveData.substring(0,keyEnd),receiveData.substring(valueStart,valueEnd).split(","));
            //更新数据
            receiveData=receiveData.substr(valueEnd+1);
        }

        //循环输出map
        for(let [key,value] of map.entries()){
            console.log(key+":"+value);
        }
    </script>
</body>

</html>

还有更简洁的方法

第一个页面需要传递的

window.location.href="search-one.html?"+val//跳转到自己需要的文件

在第2个页面接收

// 接取参数
let num = window.location.search.slice(1);
let arr = decodeURI(num)//使用decode将传递过来的参数进行拆解
console.log(arr);

第二种方法


//第一个页面事件传值
	<div class="one_child" onclick='tao(${JSON.stringify(res.data[i])})
//条转页面

function tao(s){
	console.log(s);
	let k=JSON.stringify(s)
	console.log(k);
	window.location.href='dianpuxiangqi.html?item='+k
}
//第二个页获取
// 获取URL中的查询字符串部分
var queryString = window.location.search;

// 创建URLSearchParams对象
var params = new URLSearchParams(queryString);

// 获取顶部导航栏中的值
var value = params.get('item');

console.log(value);
let kk=JSON.parse(value)
console.log(kk);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值