【发布时间】:2022-01-16 10:38:22
【问题描述】:
我正在尝试将每个复选框的值添加到 URLsearchParams,第一次检查复选框时效果很好,但是当我重新加载页面时,它不再起作用,我做错了什么?我的意思是当它是 state 时它可以工作,但在页面加载后,它不工作,我该如何解决这个问题?
function setURL(query){
//var url = window.location.protocol + "//" + window.location.host + window.location.pathname;
var url = window.location.href;
let newURL = new URL(url);
newURL.searchParams.append('brands', query)
window.history.replaceState(null, null, newURL);
}
function checkURL(){
var url = window.location.href;
let newURL = new URL(url);
window.history.replaceState(null, null, newURL);
if(newURL.searchParams.has('brands')){
let currentBrands = newURL.searchParams.get('brands');
let brandsArray = currentBrands.split(',');
brandsArray.map(function(v,i){
jQuery('input[name="pa_brand"][value="'+v+'"]').click();
});
}
}
checkURL();
let array = [];
jQuery('input[name="pa_brand"]').change(function(){
let value = this.value;
let id = array.indexOf(value);
if(jQuery(this).is(':checked')){
array.push(value)
} else {
array.splice(id, 1);
}
setURL(array.toString())
console.log(array)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" name="pa_brand" value="116"/>
<input type="checkbox" name="pa_brand" value="117"/>
<input type="checkbox" name="pa_brand" value="118"/>
【问题讨论】:
-
您能否更具体地了解重新加载并提供有关“不再工作”的更多技术解释,如果没有更多调试细节以及是否存在错误,这将毫无意义
-
@charlietfl 当 url 为
site.com/page时,它将添加类似site.com/page?brands=116的值,但是当我使用当前 url 重新加载此页面时,然后我选中另一个复选框,它不会将值附加到搜索参数
标签: javascript jquery url