两个原生JS跨页面传值的小方法

这会不会是今天写的最简单的一篇文…?


前言

今天在学校做2020年的题,碰到一个需求:用户在这个页面选择了症状,需要在下一个页面显示出用户选择的项;
这,这就触及到我的知识盲区了…
我突然想到前几天写Vue用了localStorage,总算是没空着,但还是想知道会不会有更好的方法.


一、localStorage本地存储

不能用sessionStorage,sessionStorage在当前会话关闭之后会进行销毁,存储的东西在下个页面全是undefined.

//PageA
        var link = document.querySelector("a");
        var value1
        //这个value1
        /* localStorage.setItem(value1, "1");
        var localS = localStorage.getItem(value1);
        console.log(localS); */
        link.onclick = function () {
            localStorage.setItem(value1, "1");
            var localS = localStorage.getItem(value1);
        }

当时提示我setItem应该传入两个参数,我觉得一个是key一个是value的话key应该不用提前声明,然后一跑,不行,这个value1还就得声明出来,哪怕你不赋值.

//pageB
        var value1
        var localS = localStorage.getItem(value1);
        console.log(localS);

然后在B页面接收value1我就更是觉得"这个总可以直接拿来赋值进变量了吧?" 结果还是不行,还是得声明出value1才能拿到getItem()的value1.
这个方法好在在第二个页面拿到数据之后不用进行太多处理,能比较方便的使用.

二、URL传值

这个是我问了下同学他用的方法,感觉思维上更加合理一点,

<!-- pageA -->
<body>
    <a href="#">点击跳转页面</a>
    <script>
        var link = document.querySelector("a");
        var value1 = "value1";
        var value2 = "value2";
        link.onclick = function jumpPage() {
            window.open(`pageB.html?${value1}&${value2}`);
        }
    </script>
</body>

主要就是URL拼接,其他也没什么好说的:
window.open("")

目标页面路径URL:'要打开的地址 + ? + 参数1 + & + 参数2 + & + 参数3 + ...'

在终点页面使用window.location.search()方法获取地址栏传过来的参数,得到"?参数1&参数2&参数3"

可以将其赋值给一个变量准备分离出传来的值:
var receiveValue = window.location.search
不要问号:receiveValue.substr(1)

<body>
    <p>我是pageB</p>
    <script>
    //输出都是有效的,可以解注释看看;
        var valueFromPageA = window.location.search;
        //console.log('valueFromPageA: ' + valueFromPageA);
        var aftercut = valueFromPageA.substr(1);
        //console.log('aftercut: ' + aftercut);
        var aftersplit = aftercut.split('&');
        //console.log('aftersplit: ' + aftersplit + '类型: ' + typeof (aftersplit));
        var value1 = aftersplit[0];
        var value2 = aftersplit[1];
        //console.log(value1, value2);
    </script>
</body>

比较糟糕的就是对于数据处理的步骤相比较来说会多一些.


总结

这是我个人的一些理解啦,如果您发现我的不足,我很高兴您能为我指出!
)
  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值