更新Javascript数组,以便将其传递给PHP

更新Javascript数组,以便将其传递给PHP,javascript,jquery,html,arrays,Javascript,Jquery,Html,Arrays,我主要写HTML和PHP,我真的不擅长Javascript或Jquery。但我也知道Jquery和javascript有一些非常酷的特性,可以在您查看网站的计算机或设备上呈现 我希望能够使用html输入type='checkbox'选择多行,并单击每一行,以自动更新javascript或jquery数组,该数组将仅在计算机上自动更新标记。这样,当我点击链接时,页面就会改变,PHP就会接管。这将是伟大的,如果我不必使用表格 下面是一个例子 <input type='checkbox' val

我主要写HTML和PHP,我真的不擅长Javascript或Jquery。但我也知道Jquery和javascript有一些非常酷的特性,可以在您查看网站的计算机或设备上呈现

我希望能够使用html输入type='checkbox'选择多行,并单击每一行,以自动更新javascript或jquery数组,该数组将仅在计算机上自动更新标记。这样,当我点击链接时,页面就会改变,PHP就会接管。这将是伟大的,如果我不必使用表格

下面是一个例子

<input type='checkbox' value='65' />
<input type='checkbox' value='66' />    
<input type='checkbox' value='67' />
<input type='checkbox' value='68' />

<a href='./?p=test&array=65,66,67,68'>

我希望得到的结果是数组[65,66,67,68]

我找不到一个线程已经回答了这个问题,请原谅,如果有一个已经。我也可能问得不恰当。

您的html应该是

<input type='checkbox' onclick ="getVal(this)" value='65' />
<input type='checkbox' onclick ="getVal(this)" value='66' />    
<input type='checkbox' onclick ="getVal(this)" value='67' />
<input type='checkbox' onclick ="getVal(this)" value='68' />
输出将为[“65”、“66”、“67”、“68”]

在数组中添加值时删除该值的步骤

var list = [];
function getVal(cb){ 
    if(cb.checked){
        list.push(parseInt(cb.value));
    } else{
       for(var i=0; i<list.length;i++ ) {
           if(cb.value == list[i]){
               list.splice(i,1);
           }
       }
    }    
    console.log(list)
}
var list=[];
函数getVal(cb){
如果(cb.选中){
push(parseInt(cb.value));
}否则{

对于(var i=0;i您需要的是一个eventListener,它将帮助您通过复选框捕获用户执行的事件

有两种事件方法可以实现这一点

  • 一旦改变
  • onclick
每当用户单击复选框时,这些方法都会被调用。虽然这两者之间有细微的区别,但从它们中的任何一个开始都应该可以很好地为您服务

您需要做的是将其中一个添加到DOM中。例如:

<input type='checkbox' value='65' onclick = 'doThisOnCLick(this)'/>

在此之后,您需要在相关JS文件中的某个位置定义此函数。如果您还没有任何函数,则可以在HTML页面本身的
标记中定义此函数

<script>
   var someArray = [];
   function doThisOnChange(c){
     someArray.push(a.value); //this will push 69 to array, similarly others can be pushed
   }
</script> 

var someArray=[];
函数doThisOnChange(c){
someArray.push(a.value);//这将把69推送到数组中,类似地,也可以推送到其他数组中
}
希望这对您有所帮助。为了更好地理解,我建议您尝试一下JS。它简单而棒

试试以下方法:

$('input:checkbox').change(function(){

var checked = $('input:checkbox').map(function() {
   return this.checked ? this.value :null ;
 });

console.log(checked);

});
这将记录选中的项目

看这个演示

希望这会有所帮助:)

尝试以下方法:

向复选框中添加一个类,以便我们可以向其添加单击事件, 然后,在单击事件中,我们使用
:选中的
选择器获取所有选定的元素,我们使用
val()
从中获取值,然后使用
push()
将其推送到数组中,然后使用
encodeURIComponent();
对数组进行编码(通过连接数组中的元素将其转换为字符串)

使用
attr()
函数将生成的新字符串追加到链接的href属性中

<input class="el" type='checkbox' value='65' />
<input class="el" type='checkbox' value='66' />    
<input class="el" type='checkbox' value='67' />
<input class="el" type='checkbox' value='68' />
<a class="link" href="">link</a>

var array_elements = [];
$('.el').click(function(){
  $('.el:checked').each(function(i,v){
  array_elements.push($(v).val());
  });
  var url = './?p=test&array'+encodeURIComponent(array_elements.join(','));
  $('.link').attr('href',url);
});

var数组_元素=[];
$('.el')。单击(函数(){
$('.el:checked')。每个(函数(i,v){
数组元素.push($(v).val());
});
var url='./?p=test&array'+encodeURIComponent(array_elements.join(',');
$('.link').attr('href',url);
});

这将对您有所帮助。您可以创建一个
jQuery
脚本,每当单击复选框时,该脚本都会更新您的链接,如下所示:

<input type='checkbox' class='chkbx' value='65' />
<input type='checkbox' class='chkbx' value='66' />    
<input type='checkbox' class='chkbx' value='67' />
<input type='checkbox' class='chkbx' value='68' />

<a href='./?p=test&array='>

<script>
    $('input.chkbx').click(function(){
        value = $(this).attr('value');
        link = $('a').attr('href');
        // to get the last character of the link
        lastC = link.substr(link.length -1);
        if($(this).is(':checked')){
           if(lastC == "=") {
               $('a').attr('href', link+value);
           } else {
               $('a').attr('href', link+','+value);
           }
        } else {
            y = link.splice(',');
            y.splice( $.inArray(value, y), 1 );
            x = y.join(delimiter);
            $('a').attr('href', x);
        }
})
</script>

$('input.chkbx')。单击(函数(){
value=$(this.attr('value');
link=$('a').attr('href');
//获取链接的最后一个字符
lastC=link.substr(link.length-1);
如果($(this).is(':checked')){
如果(lastC==“=”){
$('a').attr('href',link+value);
}否则{
$('a').attr('href',link+','+值);
}
}否则{
y=连接拼接(',');
y、 拼接($.inArray(值y),1);
x=y.join(分隔符);
$('a').attr('href',x);
}
})

通过这种方式,u将更新链接以添加复选框的新值,并且当复选框未选中时,它也会从链接中删除其值。请尝试这种方式,
str
变量的输出类似于
65,66,67,68
,可用于构建查询字符串

var str = '';
$('input:checkbox').change(function(){
    $('input:checkbox:checked').each(function() {
          str += $(this).val()+',';
    });
    str = str.replace(/,$/,'');
    console.log(str);
});

选中此复选框将有帮助这是一个小写的Lcheck更新为什么您不想使用表单?这是一个完美的表单用例。如果用户在复选框上单击两次会发生什么情况?我想:如果用户单击两次,那么首先添加到数组,然后单击从数组中删除,哪个复选框将被取消选中。这很好,但是r不知道如何将数组添加到超链接。html保持不变,我已经编辑了我的上述帖子,请参考
var str = '';
$('input:checkbox').change(function(){
    $('input:checkbox:checked').each(function() {
          str += $(this).val()+',';
    });
    str = str.replace(/,$/,'');
    console.log(str);
});