【发布时间】:2016-09-30 08:19:20
【问题描述】:
假设我有一个地址:
www.example.com/index.php?a=1&b=2&c=3
我想将它输入到这样的输入字段中(值最初显然是空白的):
<input id="my-input-field" value="www.example.com/index.php?a=1&b=2&c=3">
然后我希望 JS 解析 ? 之后的所有内容,获取所有查询(“a”、“b”、“c”)并查看它们是否存在于 array() 中。
然后我想显示一条消息,说明给定 URL 中的某些项目丢失了 - 但这是最简单的部分。
我无法弄清楚的部分是:如何分解 URL 并且只找到每个查询的第一部分?
我了解如何去掉问号之前的所有内容(包括问号):
var str = "www.example.com/index.php?a=1&b=2&c=3";
str = str.substring(str.indexOf("?") + 1);
alert(str);
小提琴:http://jsfiddle.net/xx3fwhvv/
这会返回:a=1&b=2&c=3
下一步可能是将字符串拆分为每个 &?
var str = "a=1&b=2&c=3";
str = str.split("&");
alert(str);
小提琴:http://jsfiddle.net/3Lo24byo/
返回:a=1,b=2,c=3
然后我们可以像这样删除= 符号之后的所有内容:
var str = 'a=1';
str = str.substring(0, str.indexOf('='));
alert(str);
小提琴:http://jsfiddle.net/vfzvu5mh/
这会导致:a
现在的问题是如何循环遍历数组并为每个项目执行此操作?这将是我需要采取的步骤。
然后我需要一个数组,如:
var myArray = array('a','c','d');
在上面的数组中,交叉检查我们在上面创建的数组,看看是否有任何匹配的值应该返回 b 不匹配,因为它不在 myArray 中。
这就是我卡住的地方。任何帮助表示赞赏。我不太擅长 JS,但我一直在努力解决这个问题。
到目前为止,代码看起来像这样:
var str = "www.example.com/index.php?a=1&b=2&c=3";
newStr = str.substring(str.indexOf("?") + 1);
strArray = newStr.split("&");
i = 1;
for {
newStrArray = strArray[i].substring(0, strArray[i].indexOf('='));
i++;
}
以上对我不起作用,但无论如何都是这样的。
编辑(我将积极编辑这部分,直到问题得到解答):
var str = "www.example.com/index.php?a=1&b=2&c=3";
var newStr = str.substring(str.indexOf("?") + 1);
var myStringArray = newStr.split("&");
var arrayLength = myStringArray.length;
for (var i = 0; i < arrayLength; i++) {
myStringArray = myStringArray[i].substring(0, myStringArray[i].indexOf('='));
alert(myStringArray[i]);
}
【问题讨论】:
-
@anu 感谢您的评论!我四处搜索,我的问题不是如何从 URL 中获取查询字符串,只需将它们分解并比较它们。
-
@anu 在您的第二个链接中,我也不需要获取特定查询获取值的值,这似乎是关于 SO 的每个问题的内容。
-
使用我之前评论中给出的函数,您可以获得一组查询参数。使用该数组进行比较
标签: javascript