更新Javascript数组,以便将其传递给PHP
我主要写HTML和PHP,我真的不擅长Javascript或Jquery。但我也知道Jquery和javascript有一些非常酷的特性,可以在您查看网站的计算机或设备上呈现 我希望能够使用html输入type='checkbox'选择多行,并单击每一行,以自动更新javascript或jquery数组,该数组将仅在计算机上自动更新标记。这样,当我点击链接时,页面就会改变,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
<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);
});