两个静态html页之间的传值

需求:两个静态页面,打开新的页面后需要根据当前页面点击的按钮去确定新页面默认的显示

需要跳转的页面按钮
新页面的tab页

解决思路

在跳转后传递值,然后新页面获取值,根据值去添加案例的 class,使对应的案例标题颜色改变

解决方法1—隐藏域

window.open() 父子页面的传参&传值

首先,父页面中button 跳转采用

window.open('case-detail.html');

button绑定 value 值

<button class="btn-arr" value="0">
  案例详情<br />
   <i class="icon iconfont icon-iconset0417"></i>
</button>

子页面中获取 vlaue的值

var a = window.opener.document.getElementById("btn-case").value;

因为我这边涉及多个,如果使用同一个id 不能获取vlaue 值,所以我在页面上写了一个空的按钮用来存储所点击的 vlaue

<button id="btn-case" value=""></button>

当点击 button 时, 把当前 buttonvlaue值赋值为** id="btn-case" ** 的 vlaue

$('.btn-arr').click(function(){
    $('#btn-case').val($(this).val());
    window.open('case-detail.html');        
});

然后在子页面中就可以通过去获取** id="btn-case"** 的** vlaue值,来设置跳转后的默认显示,选项比较可以采用switch case** 语句

var a = window.opener.document.getElementById("btn-case").value;
a = parseInt(a);  
var aA = $('.case-detail .tab-ul').find('a');

switch(a){
    case 1:
        aA.removeClass('active');
        aA.eq(1).addClass('active');
        break;
    case 2:
        aA.removeClass('active');
        aA.eq(2).addClass('active');
        break;
default:
        break;
}

注意:这里的a ** 使用alert(typeof(a));**弹出 String ,使用switch case 语句时需要转换为 number 值,或者 **case **值设置为 ‘1’,添加引号。

网上还有很多两个静态页面的传值,选用这个是因为取值方便.只要window.opener指向父窗口,就可以访问所有对象.不仅可以访问值,还可以访问父窗口的方法.值长度无限制. 缺点:两窗口要存在着关系.就是利用window.open打开的窗口.不能跨域.

解决方法2—Url传值

url传值 形如:case.html?id=1&msg=true

跳转页面时把参数写入Url后的参数中,这种方法对与a标签跳转很方便,后面价格参数即可,下面来看看页面中怎么去应用

页面A
<div id="Div1"><a href="case.html?id=1">案例详情</a><div>

对于上面的案例可以直接在html上把参数带上,在打开的页面中获取。

如果对于input框输入,或者其他需要传入的值

<input  id="test" type="text"  value=""/>
<button id="btn">案例详情<button>
var oInput = document.getElementById("test");
var oBtn =  document.getElementById("btn");

oBtn.onclick = function(){
  var id = oInput.value;
  window.location.href = "case.html?id="+id;
//传递多个参数
 window.location.href = "case.html?id="+id+"&msg=123";
};
页面B

B页面通过url去分割找到需要的参数

 /*
   * 获取Url查询参数 公共方法
   */
 function  getParams(name, href) {
    var href = href || window.location.href,
      value = '';

    if (name) {
      var reg = new RegExp(name + '=([^&]*)', 'g');
      href.replace(reg, function($0, $1) {
        value = decodeURI($1);
      });
    } else {
      value = {};
      var reg = /\b(\w+)=([^\/&]*)/g;
      href.replace(reg, function($0, $1, $2) {
        value[$1] = decodeURI($2);
      });
    }
    return value;
  };
//idB中就是获取的A页面带过来的id
var idB =  getParams("id");
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,637评论 0 17
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,080评论 19 139
  • 生命的洪流啊,每个人既伟大又渺小,在不经意的瞬间,别人走进我们的生活,成为我们的故事或谈资,同理,我们也不知疲惫地...
    解忧少年阅读 934评论 0 1
  • 来时啼苦短, 在世莫蹉跎。 不效英雄死, 心存大义活。
    海王星1984阅读 151评论 2 0
  • 无聊的一天 你找我拿快递,我刚睡醒,晚了七分钟,你说没事了,可能你找到了另一个给你拿快递的人 上了一下午最佳,还是...
    你好像很迷人阅读 126评论 0 0