检查 URL 是否使用 JavaScript 传递变量
Check if URL pass variable using JavaScript
如何检查URL是否包含变量?我有这样的功能
我的第二个问题是,假设 URL 已经传递了 lang 变量,像这样(http://index.php?id=23&lang=en)我希望当他们再次运行此函数时,它将 lang 变量替换为新的 on 而不是像这样添加新的 lang 变量(http://index.php?id=23&lang=en&lang=jp)
function menu_goto(newvalue)
{
var baseurl = window.location.href ;
var langwithpara = "&lang=" + newvalue;
var langwopara = "?lang=" + newvalue;
if (newvalue != 0) {
if(baseurl.match(/?/)){
alert ('123');
location.href = baseurl + langwithpara ;
}
else{
alert ('456');
location.href = baseurl + langwopara ;
}
}
}
我的新编码(工作)
function menu_goto(newvalue)
{
var baseurl = window.location.href ;
var url = baseurl + ( (baseurl.match(/'?/))? '&':'?' ) + 'lang=' + newvalue;
location.href = url ;
}
window.location 实际上是一个对象,它有一个"search"属性,可以更轻松地解析查询字符串。
function getParam(param){
var qs = window.location.search.substring(1).split('&');
var qsp;
for (p in qs){
qsp = qs[p].split('=');
if (qsp[0] == param) return qsp[1];
}
return null;
}
要检查特定参数:
var value = getParam('name');
问题可能是正则表达式中缺少"?"的转义:
if (baseurl.match(/'?/)) { // ...
更短一点的是:
var url = baseurl + ( (baseurl.match(/'?/))? '&':'?' ) + 'lang=' + newvalue;
您可能希望之前清理任何参数"lang",这样它就不会因多次出现而成为数组。
最好像这样重新组装网址
function menu_goto(newvalue) {
var params = {};
if (self.location.search) {
var pairs = self.location.search.substring(1).split("&"); // skip the "?"
for (var i = 0; i < pairs.length; i++) {
var parts = pairs[i].split('=');
params[parts[0]] = parts[1];
}
}
params.lang = newvalue;
var query = new Array();
for (var p in params) query.push(p + '=' + params[p]);
var url = self.location.protocol + '//' + self.location.host + self.location.pathname
+ '?' + query.join('&');
self.location.href = url;
}
这是使用正则表达式的另一种解决方案:
function menu_goto2(newvalue) {
var url = self.location.href;
url = url.replace(/#.*/, ''); // clean any hash at end
url = url.replace(/[&'?]lang=[^&]*/, ''); // clean any param lang and its value
// we might have had two or more params and "lang" was the first one
// then we might have lost the "?" => replace first "&" by "?"
if (url.indexOf('?') < 0 && url.indexOf('&') >= 0) url = url.replace(/&/, '?');
url += ( url.match(/'?/)? '&':'?') + 'lang=' + newvalue; // add the new param lang
self.location.href = url;
}
可以缩短为
function menu_goto3(newvalue) {
var url = self.location.href.replace(/#.*/, '').replace(/[&'?]lang=[^&]*/, '');
if (url.indexOf('?') < 0 && url.indexOf('&') >= 0) url = url.replace(/&/, '?');
url += ( url.match(/'?/)? '&':'?') + 'lang=' + newvalue;
self.location.href = url;
}
您可以简单地使用indexOf()
方法来实现此目的
if(window.location.href.indexOf("your value") != -1) {
alert("It contains");
}
else {
alert("Nope");
}
function menu_goto(newvalue)
{
var baseurl = window.location.href ;
var langwithpara = "&lang=" + newvalue;
var langwopara = "?lang=" + newvalue;
if (newvalue != 0) {
if(baseurl.match(/'?/)){ // change /?/ to /'?/
alert('123');
location.href = baseurl + langwithpara ;
}
else{
alert('456');
location.href = baseurl + langwopara ;
}
}
}
相关文章:
- 调用类向后变量 (JavaScript)
- 初始化父类中的变量(JavaScript/CoffeeScript 习语)
- 可以'找不到变量javascript错误
- 输出数组变量javascript
- 自提交表单访问变量javascript
- 将变量 javascript 添加到用于旋转图像的链接中
- 在文本字段中显示保存的本地存储变量 - javascript
- 将变量添加到变量 JavaScript 中
- 获取要在变量 JavaScript 中使用的用户输入值
- 如何在变量 Javascript 中删除双引号
- 使用变量 javascript 从 json 文件中获取数据
- 读取输入和打印变量 - JavaScript 和 HTML 4.01
- 传递 PHP 变量 JavaScript 窗口位置
- 重置变量 JavaScript
- 变量 JavaScript 中的变量
- 尝试使用多个函数时无法使用全局变量 - JavaScript - 初学者
- 如何按值将数组分配给另一个变量 JavaScript
- setTimout 搞砸了变量 JavaScript
- 用内部函数变量更改外部函数变量?Javascript
- 根据变量 JavaScript 增加