search

Home  >  Q&A  >  body text

javascript - 纯前端,判断进入A页面时链接中有没有传进一个参数?

从B页面进入A页面,链接是A.html。
从c页面进入A页面,链接是A.html?ss=da。

在A页面打开时,如何判断有没有参数,并根据不同链接执行不同方法

阿神阿神2902 days ago397

reply all(8)I'll reply

  • 天蓬老师

    天蓬老师2017-04-10 15:14:31

    希望对你有帮助

    /*
     * 获取特定字段的查询字符串
     * @param {String} name: 查询字符串的字段名
     */
    function getQuerySrting(name) {
        var search = location.search.substring(1).split('&');
        var value = false;
        for (var i = 0;i < search.length;i++) {
            var keyValue = search[i].split('=');
            if (keyValue[0] == name) {
                value = keyValue[1];
            }
        }
        return value;
    }
    

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 15:14:31

    用js拆location.href,具体代码本站应该有相关示例,自己找找

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 15:14:31

    javascriptvar 
    o=location.search.substr(1).split('&'),
    i=o.length,
    _o,
    GET={};
    
    while(i--){
        _o=o[i].split('=');
        GET[_o.shift()]=decodeURIComponent(_o.join('='));
    }
    
    if(GET['ss']=='da'){
        /* 传入参数有 ss 并且等于 'da' */
    }
    

    呃...
    再加上几个例子

    上面运行完之后

    再运行

    javascriptGET.ss 
    

    或者

    javascriptGET['ss'] 
    

    就会返回 'dd'

    你也可以直接用它进行判断

    javascriptif(GET.ss=='dd'){
        alert('GET 参数 ss 值等于 dd');
    } 
    

    reply
    0
  • PHPz

    PHPz2017-04-10 15:14:31

    Orz 那个不是 window.location.search 吗?

    附:用 window.location.hash 还可以促发 hashShange 事件

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-10 15:14:31

    请使用成熟的 query-string 库

    https://github.com/sindresorhus/query-string

    jsconsole.log(location.search);
    // ?foo=bar
    
    var parsed = queryString.parse(location.search);
    console.log(parsed);
    // {foo: 'bar'}
    
    console.log(location.hash);
    // #token=bada55cafe
    
    var parsedHash = queryString.parse(location.hash);
    console.log(parsedHash);
    // {token: 'bada55cafe'}
    
    parsed.foo = 'unicorn';
    parsed.ilike = 'pizza';
    
    location.search = queryString.stringify(parsed);
    
    console.log(location.search);
    // ?foo=unicorn&ilike=pizza
    

    reply
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-10 15:14:31

    我是php的,这种工作也用前端做啊?,通常跳转页面不都是后台进入控制器通过if判断指定魔板么?如果有参数进入什么模板,如果没参数进入什么模板?我不是来回答问题的哈,我是来学知识的袄,通常js代码不都是等待bom活着dom加载完成才执行么?这一瞬间页面已经出来了袄,这个页面给后端做不是手拿把掐么?难不成你写的是纯静态页面啊?求知识袄

    reply
    0
  • 怪我咯

    怪我咯2017-04-10 15:14:31

    前端用js吧。
    以前我写的一段拿出来可以作为范例。

    <script>
    //方法
    var request =
    {
    QueryString : function(val)
    {
    var uri = window.location.search;
    var re = new RegExp("" +val+ "=([^&?]*)", "ig");
    return ((uri.match(re))?(uri.match(re)[0].substr(val.length+1)):null);
    }
    }
    </script>
    

    用法:
    URL: player.html?inputStr=http://***/三国演义.The.Romance.of.three.kingdoms.1994.中国.XTM.DVD-HALFCD/三国演义.The.Romance.of.three.kingdoms.1994.中国.XTM.DVD-HALFCD.EP37.mkv

    <script>
    //调用
    var rt = request.QueryString("inputStr");
    document.write("<video src=\""+rt+"\" controls preload></video>")
    </script>
    

    就是把inputStr传进去的视频地址作为参数传给rt,然后用video标签包起来。

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-10 15:14:31

    javascriptfunction searchQuery(query) {
        return decodeURI(window.location.search.replace(new RegExp('^(?:.*[&\\?]' + encodeURI(query).replace(/[\.\+\*]/g, '\\$&') + '(?:\\=([^&]*))?)?.*$', 'i'), '$1'));
    }
    

    如果有该参数则返回参数值,如果没有则返回空字符串

    reply
    0
  • Cancelreply