Javascript 使用单击和取消单击按钮更新参数

Javascript 使用单击和取消单击按钮更新参数,javascript,php,html,Javascript,Php,Html,我的网页上有4个按钮,每个按钮都有一个值。因此,根据网页中按下/单击的按钮,我需要相应地修改url中的参数“Buttonvals”,因为这些值将用作SQL查询的过滤器 例如,如果选择了按钮1、2和4 url必须为:url?buttonvals=value1 | value2 | value4。 请建议我如何着手做这件事。如果可能,请提供代码,因为我对Javascript和php还是新手 <input type="checkbox" name="item1" value="value1"

我的网页上有4个按钮,每个按钮都有一个值。因此,根据网页中按下/单击的按钮,我需要相应地修改url中的参数“Buttonvals”,因为这些值将用作SQL查询的过滤器

例如,如果选择了按钮1、2和4

url必须为:url?buttonvals=value1 | value2 | value4。 请建议我如何着手做这件事。如果可能,请提供代码,因为我对Javascript和php还是新手

  <input type="checkbox" name="item1" value="value1"> value1 <br>
  <input type="checkbox" name="item2" value="value2">  value2 <br>
  <input type="checkbox" name="item3" value="value3">  value3 <br>
  <input type="checkbox" name="item4" value="value4">  value4 <br>

  <input type="submit" value="Submit">




  the url must become something like   url?buttonvals=value1|value2|value4
value1
值2
值3
值4
url必须类似于url?buttonvals=value1 | value2 | value4

提前感谢:)

您好,我有一个解决方案给您

你的HTML代码

<input type="checkbox" name="item1" value="value1" onclick="setUrlParams(this)"> value1 <br>
<input type="checkbox" name="item2" value="value2" onclick="setUrlParams(this)">  value2 <br>
<input type="checkbox" name="item3" value="value3" onclick="setUrlParams(this)">  value3 <br>
<input type="checkbox" name="item4" value="value4" onclick="setUrlParams(this)">  value4 <br>
<input type="submit" value="Submit">
value1
值2
值3
值4
JS代码

   function setUrlParams($obj){

  var myButtonClasses = $obj.classList;

 if (myButtonClasses.contains("chbox-clicked")) {

    myButtonClasses.remove("chbox-clicked");

 }else{
   myButtonClasses.add("chbox-clicked");
 }


  //now get all selcted classes
  var valueStr = "";
var chboxCheckd  = document.getElementsByClassName('chbox-clicked');
for (var i = 0; i < chboxCheckd.length; ++i) {
    var item = chboxCheckd[i];  
    valueStr = valueStr+item.value+"|";
}
  var finalurl = window.location.href;
  if( finalurl.indexOf('?') >= 0){
    finalurl = finalurl+"&buttonvals="+valueStr.slice(0, -1);
   }else{
    finalurl = finalurl+"?buttonvals="+valueStr.slice(0, -1); 
   }
  //var finalurl = "http://abc.xyz/buttonvals="+valueStr.slice(0, -1);
  console.log(finalurl);
  //window.history.replaceState(null, null, finalurl);
  //window.location.href = finalurl
}
函数seturlparms($obj){
var myButtonClasses=$obj.classList;
如果(myButtonClasses.contains(“点击chbox”)){
myButtonClasses.remove(“点击chbox”);
}否则{
myButtonClasses.add(“点击chbox”);
}
//现在获取所有选择的类
var valueStr=“”;
var chboxCheckd=document.getElementsByClassName('chbox-clicked');
对于(变量i=0;i=0){
finalurl=finalurl+“&buttonvals=“+valueStr.slice(0,-1);
}否则{
finalurl=finalurl+“?buttonvals=“+valueStr.slice(0,-1);
}
//var finalurl=”http://abc.xyz/buttonvals=“+valueStr.slice(0,-1);
控制台日志(finalurl);
//window.history.replaceState(null,null,finalurl);
//window.location.href=finalurl
}
取消注释replacestate行以更改位置,而无需重新加载页面。或取消注释最后一行,以使用url重新加载页面

目前它只在控制台上打印。这里不允许在JS编辑器上也这样


共享您的HTML也请提供一些示例HTML,我们可以使用这些示例帮助您(更简单、更快)听起来您实际上想要的是复选框,而不是按钮。正如@Jeff告诉我的,我将使用隐藏的复选框并通过按钮触发值。我添加了HTML:)是的,复选框就是我想要的嗨,这工作得很好:)但是如果url中有其他参数,这将删除这些参数。我该如何修复这些参数?:)我还编辑了代码和jsbin。现在检查一下@RPNope。它的打印检查在js箱上@如果要保留值,请将选中复选框值存储在某个位置,然后执行相反操作以显示选中@反相