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