js给url添加查询参数

对于一个不确定的url想要确保其包含某个查询参数?可以试试这种方法

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>index</title>
</head>
<body>
    <h2>定义</h2>
    <div>var a = 'http://www.baidu.com'</div>
    <div>var b = AddUrlParm(a, 'x', 1)</div>
    <div>var c = AddUrlParm(b, 'x', '')</div>
    <div>var d = AddUrlParm(c, 'y', '2')</div>
    <div>var e = AddUrlParm(d, 'x', 3)</div>
    <h2>结果</h2>
    <div id="result"></div>
    <script>
        var AddUrlParm = function (url, key, value) {
            var returnUrl = ''
            if (url.indexOf('?') == -1) {
                returnUrl += url + '?' + key + '=' + value
            } else {
                if (url.indexOf('?' + key + '=') == -1 && url.indexOf('&' + key + '=') == -1) {
                    returnUrl += url + '&' + key + '=' + value
                } else {
                    var isDone = false
                    var startIndex = 0
                    var endIndex = url.length - 1
                    var parm = '?' + key + '='
                    for (var i = 0; i < url.length; i++) {
                        if (url.substr(i, parm.length) == parm) {
                            startIndex = i + parm.length
                            for (var j = startIndex; j < url.length; j++) {
                                if (url[j] == '&') {
                                    endIndex = j
                                    break
                                } else if (j == url.length - 1) {
                                    endIndex = url.length
                                }
                            }
                            isDone = true
                            break
                        }
                    }
                    if (!isDone) {
                        parm = '&' + key + '='
                        for (var i = 0; i < url.length; i++) {
                            if (url.substr(i, parm.length) == parm) {
                                startIndex = i + parm.length
                                for (var j = startIndex; j < url.length; j++) {
                                    if (url[j] == '&') {
                                        endIndex = j
                                        break
                                    } else if (j == url.length - 1) {
                                        endIndex = url.length
                                    }
                                }
                                break
                            }
                        }
                    }
                    var parmKeyValue = parm + url.substring(startIndex, endIndex)
                    returnUrl = url.replace(parmKeyValue, parm + value)
                }
            }
            return returnUrl
        }
        var a = 'http://www.baidu.com'
        var b = AddUrlParm(a, 'x', 1)
        var c = AddUrlParm(b, 'x', '')
        var d = AddUrlParm(c, 'y', '2')
        var e = AddUrlParm(d, 'x', 3)
        document.getElementById('result').innerHTML = 'a = ' + a + '<br>' + 'b = ' + b + '<br>' + 'c = ' + c + '<br>' + 'd = ' + d + '<br>' + 'e = ' + e
    </script>
</body>
</html>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值