对于一个不确定的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>