过滤器上的Javascript拆分url

过滤器上的Javascript拆分url,javascript,Javascript,我让我的用户可以过滤产品,而不用用ajax刷新页面。我更新url使其看起来像: 其中int值是id的除以-。 因此,我有以下选择: 风格 价格 烙印 颜色 我想要的是在每个筛选器选项的var中获取这些值,以便以以下内容结束: var styleValues = 7,1,2 var priceValues = 4,5,7 如果只选择了价格过滤器,url将如下所示 所以我不能对过滤器的标签进行拆分 我真的很想知道什么是将url转换为不同变量的最佳方法 我已经知道的: 如何获取过滤器部件: va

我让我的用户可以过滤产品,而不用用ajax刷新页面。我更新url使其看起来像:

其中int值是id的除以-。 因此,我有以下选择:

风格

价格

烙印

颜色

我想要的是在每个筛选器选项的var中获取这些值,以便以以下内容结束:

var styleValues = 7,1,2
var priceValues = 4,5,7
如果只选择了价格过滤器,url将如下所示

所以我不能对过滤器的标签进行拆分

我真的很想知道什么是将url转换为不同变量的最佳方法

我已经知道的:

如何获取过滤器部件:

var filterPart =window.location.search;

也许这可以帮助你:

var Request = {
QueryString : function (item) {
    var svalue = location.search.match(new RegExp("[\?\&]" + item + "=([^\&]*)(\&?)","i"));
    return svalue?svalue[1]:svalue;
},

queryAllString : function() {
    var urlLocation = location.href;
    var startPosition = urlLocation.indexOf("?");
    if (startPosition < 0) {
        return '';
    } else {
        return urlLocation.slice(startPosition);
    }
}
}

关于css技巧的精彩文章,涵盖以下内容: JavaScript可以部分访问当前URL。对于此URL:

window.location.protocol=“http:” window.location.host=“css tricks.com” window.location.pathname=“示例/index.html” 因此,要获取JavaScript中的完整URL路径:

var newURL = window.location.protocol + "//" + window.location.host + "/" + window.location.pathname;
如果需要呼出路径名,例如类似URL的URL,可以在“/”字符上拆分字符串

var pathArray = window.location.pathname.split( '/' );
然后按数组的各个部分访问不同的部分,如

var secondLevelLocation = pathArray[0];
要将该路径名重新组合在一起,您可以将数组缝合在一起,然后将“/”放回:

var newPathname = "";
for (i = 0; i < pathArray.length; i++) {
  newPathname += "/";
  newPathname += pathArray[i];
}
var newPathname=“”;
对于(i=0;i
或者像这样::

函数getQueryVariable(变量) { var query=window.location.search.substring(1); var vars=query.split(&);
对于(var i=0;i我自己对这个问题的看法是:

//这只是为了弥补当前文档的不足。要搜索的位置:
var documentURL=http://mywebsite.com/products/filter?style=7-1-2&价格=4-5-7&品牌=48-12-5&颜色=8-4',
tempA=document.createElement('a');
tempA.href=documentURL
变量搜索={
“get”:函数(){
变量查询={
//找到所有命名参数的缓存:
“已找到”:[]
},
//去掉前面的“?”:
queryString=tempA.search.substring(1),
//获取键值对:
keyValues=queryString.split('&'),
//与forEach()一起使用:
一对
keyValues.forEach(函数(el){
//创建由keyName和keyValue组成的数组:
对=el.分割('=');
//如果我们同时拥有名称和值,我们将继续:
如果(pair.length==2){
如果(!查询[对[0]]){
//如果当前密钥没有当前条目,我们:
//将键按到“已找到”数组,然后
//在查询对象中为该键创建记录
//包含找到的值的数组:
querys.found.push(对[0]);
查询[pair[0]]=pair[1]。拆分('-');
}否则{
//否则(查询对象中存在一个现有键),
//我们将值推送到现有数组的末尾:
查询[对[0]]。推送(对[1])
}
}
});
返回查询;
}
};
var cachedsearchs=searches.get(),
allKeys=cachedSearches.found;
allKeys.forEach(函数(el){
log(el,cachedSearches[el],cachedSearches[el].join(',);
});
试试看

var-filtered={};
变量url=”http://mywebsite.com/products/filter?style=7-1-2&价格=4-5-7&品牌=48-12-5&颜色=8-4”;
var filters=url.split(“?”[1]。split(“&”);
filters.map(函数(val,i){
已筛选的[val.split(“=”[0]]=val.split(“=”[1]。拆分(“-”)。联接(“,”;
document.body.innerText++=(Object.keys(已筛选)[i].toString()+”:“+已筛选[val.split(“=”[0]])+”\n

});
@DavidThomas typo;)
var newPathname = "";
for (i = 0; i < pathArray.length; i++) {
  newPathname += "/";
  newPathname += pathArray[i];
}
function getQueryVariable(variable)
{
       var query = window.location.search.substring(1);
       var vars = query.split("&");
       for (var i=0;i<vars.length;i++) {
               var pair = vars[i].split("=");
               if(pair[0] == variable){return pair[1];}
       }
       return(false);
}
var filtered = {};
var url = "http://mywebsite.com/products/filter?style=7-1-2&price=4-5-7&brand=48-12-5&color=8-4";
var filters = url.split("?")[1].split("&");
filters.map(function(val) {
  filtered[val.split("=")[0]] = val.split("=")[1].split("-").join(",")
});
console.log(filtered);