Javascript 选择radiobutton时重新加载页面
我正在尝试使用单选按钮从数据库中排序对象。我希望通过url传递排序参数,然后在按下单选按钮时重新加载页面。但是,当选中单选按钮时,我无法重新加载页面 radiobuttons有一个类,在JS中,我访问它们并向每一个添加事件侦听器。问题是,重新加载可以工作,但不会停止重新加载,或者页面根本不重新加载 相关JS代码Javascript 选择radiobutton时重新加载页面,javascript,Javascript,我正在尝试使用单选按钮从数据库中排序对象。我希望通过url传递排序参数,然后在按下单选按钮时重新加载页面。但是,当选中单选按钮时,我无法重新加载页面 radiobuttons有一个类,在JS中,我访问它们并向每一个添加事件侦听器。问题是,重新加载可以工作,但不会停止重新加载,或者页面根本不重新加载 相关JS代码 const url = (new URL(window.location.href)).searchParams; let buttons = document.getElements
const url = (new URL(window.location.href)).searchParams;
let buttons = document.getElementsByClassName('sf');
for(let i = 0; i < buttons.length; i++) {
buttons[i].addEventListener('click', window.location.reload(false));
}
这段代码没有任何作用
我很确定页面会无限地重新加载,因为我在循环中分配事件侦听器,但是我怎么做呢
buttons[i].addEventListener('click', window.location.reload(false));
不是将函数绑定到事件,而是实际调用window.location.reload(false)
您应该定义一个调用reload
的函数,如下所示
buttons[i].addEventListener('click', () => window.location.reload(false));
这个
不是将函数绑定到事件,而是实际调用window.location.reload(false)
您应该定义一个调用reload
的函数,如下所示
buttons[i].addEventListener('click', () => window.location.reload(false));
这与您认为的不同:
buttons[i].addEventListener('click', window.location.reload(false));
这将立即执行.reload()
,并且(如果页面没有重新加载,使其仍然没有意义)将该函数的结果(未定义)绑定为事件侦听器
您不希望绑定到重新加载的结果,而是希望绑定到重新加载的函数:
buttons[i].addEventListener('click', function () {
window.location.reload(false);
});
现在,不管这是否会修复表排序,这本身有点超出了范围。但这应该可以防止无限次的重新加载,至少可以将重新加载绑定到click事件。这不会像您认为的那样:
buttons[i].addEventListener('click', window.location.reload(false));
这将立即执行.reload()
,并且(如果页面没有重新加载,使其仍然没有意义)将该函数的结果(未定义)绑定为事件侦听器
您不希望绑定到重新加载的结果,而是希望绑定到重新加载的函数:
buttons[i].addEventListener('click', function () {
window.location.reload(false);
});
现在,不管这是否会修复表排序,这本身有点超出了范围。但这应该可以防止无限重载,并且至少可以将重载绑定到click事件。
。addEventListener
需要一个回调函数作为其第二个参数,它可以在单击按钮时执行。此时,您不是在添加回调函数,而是在执行一个函数(因此将使用window.location.reload(false)
的返回结果)
因此,您实际上是在页面加载时调用回调函数,而不是在单击事件发生时
相反,一个相对简单的解决方案是将要执行的函数包装到函数本身中。这样,您就可以调用函数,然后执行页面重新加载
for(let i = 0; i < buttons.length; i++) {
buttons[i].addEventListener('click', _ => window.location.reload(false));
}
for(设i=0;iwindow.location.reload(false));
}
。addEventListener
要求将回调函数作为其第二个参数,单击按钮时可以执行该参数。此时,您不是在添加回调函数,而是在执行一个函数(因此将使用window.location.reload(false)
的返回结果)
因此,您实际上是在页面加载时调用回调函数,而不是在单击事件发生时
相反,一个相对简单的解决方案是将要执行的函数包装到函数本身中。这样,您就可以调用函数,然后执行页面重新加载
for(let i = 0; i < buttons.length; i++) {
buttons[i].addEventListener('click', _ => window.location.reload(false));
}
for(设i=0;iwindow.location.reload(false));
}