Javascript 数组最大长度不工作
当我在图像上单击Javascript 数组最大长度不工作,javascript,jquery,arrays,Javascript,Jquery,Arrays,当我在图像上单击时,它应该将它添加到数组中,但是数组的最大长度是6,因此如果数组中已经有6个对象,它应该提醒并停止让用户在任何新图像上单击 当我运行以下命令时,我可以继续添加图像,并且警报不会发生 jQuery('body').on('change', '.masonry .item :checkbox', function () { var urls = []; urls.length = 6; if (jQuery(urls.len
时,它应该将它添加到数组中,但是数组的最大长度是6,因此如果数组中已经有6个对象,它应该提醒并停止让用户在任何新图像上单击
当我运行以下命令时,我可以继续添加图像,并且警报不会发生
jQuery('body').on('change', '.masonry .item :checkbox', function () {
var urls = [];
urls.length = 6;
if (jQuery(urls.length > 6)) {
alert("Puoi aggiungere un massimo di 6 immagini");
} else {
jQuery('.masonry .item :checkbox:checked').each(function () {
urls.push(jQuery(this).next('label').find('img').attr('src'));
});
}
});
使用if(url.length>6)
代替if(jQuery(url.length>6))
这是预期的工作。
var url=[];
url.length=6;
document.write(URL.length);
文件。写(“
”);
document.write(url.length>6)
使用if(url.length>6)
而不是if(jQuery(url.length>6))
这是预期的工作。
var url=[];
url.length=6;
document.write(URL.length);
文件。写(“
”);
document.write(url.length>6)
您必须检查已检查项目的长度,而不是空数组
jQuery('body').on('change', '.masonry .item :checkbox', function () {
var urls = [];
var checkedItems = jQuery('.masonry .item :checkbox:checked'); // get the checked items
if (checkedItems.length > 6) { // if the checked items are more than 6, ...
alert("No! No! No! Only 6!");
jQuery(this).prop("checked", false); //<<< UNCHECK THE ELEMENT JUST CHECKED SO THE COUNT REMAINS 6
} else {
checkedItems.each(function () {
urls.push(jQuery(this).next('label').find('img').attr('src'));
});
}
});
jQuery('body')。on('change',')。砌体。项:复选框',函数(){
var url=[];
var checkedItems=jQuery('.mashise.item:checkbox:checked');//获取选中的项
如果(checkedItems.length>6){//如果选中的项目超过6。。。
警告(“不!不!不!只有6个!”);
jQuery(this).prop(“checked”,false);//您必须检查选中项的长度,而不是空数组
jQuery('body').on('change', '.masonry .item :checkbox', function () {
var urls = [];
var checkedItems = jQuery('.masonry .item :checkbox:checked'); // get the checked items
if (checkedItems.length > 6) { // if the checked items are more than 6, ...
alert("No! No! No! Only 6!");
jQuery(this).prop("checked", false); //<<< UNCHECK THE ELEMENT JUST CHECKED SO THE COUNT REMAINS 6
} else {
checkedItems.each(function () {
urls.push(jQuery(this).next('label').find('img').attr('src'));
});
}
});
jQuery('body')。on('change',')。砌体。项:复选框',函数(){
var url=[];
var checkedItems=jQuery('.mashise.item:checkbox:checked');//获取选中的项
如果(checkedItems.length>6){//如果选中的项目超过6。。。
警告(“不!不!不!只有6个!”);
jQuery(this).prop(“checked”,false);//将URL数组声明为全局变量。
删除URL.length=6;它没有效果。
将if条件修改为
如果(url.length>6)将URL数组声明为全局变量。
删除URL.length=6;它没有效果。
将if条件修改为
如果(url.length>6)如果您需要最多6个选中的src
input
s,您可以创建一个对象
,在该对象中,您可以根据项目的选中状态设置和删除项目。此外,通过使用单击
事件,您可以防止不必要地选中该复选框(这将需要您手动取消选中)。请在下面查找工作小提琴和工作片段
var url={};
console.clear();
jQuery('body')。在('click',')上。砌体。项:复选框',函数(e){
var this_id=jQuery(this).attr(“id”);
var is_checked=jQuery(this).is(“:checked”);
如果(是否选中){
if(Object.keys(url).length<6){
url[this_id]=jQuery(this).next('label').find('img').attr('src');
}否则{
警报(“6号伊马基尼山的火山口”);
e、 预防默认值();
返回false;
}
}否则{
删除(URL[此id]);
}
});
如果您需要最多6个选中的src
input
s,您可以创建一个对象
,在该对象中,您可以根据项目的选中状态设置和删除项目。此外,通过使用单击事件,您可以防止不必要地选中该复选框(这将需要您手动取消选中)。请在下面查找工作小提琴和工作片段
var url={};
console.clear();
jQuery('body')。在('click',')上。砌体。项:复选框',函数(e){
var this_id=jQuery(this).attr(“id”);
var is_checked=jQuery(this).is(“:checked”);
如果(是否选中){
if(Object.keys(url).length<6){
url[this_id]=jQuery(this).next('label').find('img').attr('src');
}否则{
警报(“6号伊马基尼山的火山口”);
e、 预防默认值();
返回false;
}
}否则{
删除(URL[此id]);
}
});
据我所知,以下代码导致了问题:
jQuery('.mashise.item:checkbox:checked')。每个(函数(){
push(jQuery(this).next('label').find('img').attr('src'));
});
假设您有10个图像,所以每次单击时,您都会推送10次。您应该只推送当前元素一次。请尝试检查元素是否存在。如果是,请不要推送它
下面是我将如何做的示例。它不使用jQuery,,但您可以相应地修改代码
编辑
问题是:
jQuery('body')。on('change',')。mashise.item:checkbox',function(){
var url=[];
您每次单击都会初始化URL
。因此它将始终具有length=0
它应该在处理程序的范围之外。据我所知,以下代码导致了问题:
jQuery('.mashise.item:checkbox:checked')。每个(函数(){
push(jQuery(this).next('label').find('img').attr('src'));
});
假设您有10个图像,所以每次单击时,您都会推送10次。您应该只推送当前元素一次。请尝试检查元素是否存在。如果是,请不要推送它
下面是我将如何做的示例。它不使用jQuery,,但您可以相应地修改代码
编辑
问题是:
jQuery('body')。on('change',')。mashise.item:checkbox',function(){
var url=[];
您每次单击都会初始化URL
。因此它将始终具有length=0
它应该在处理程序的范围之外。检查此解决方案,希望有帮助,您可以检查console.log以查看更新的url和url计数
首先在更改事件外声明数组URL
内部if
使用
var urls = []; // if you wish to use it outside, make it global
$('.masonry :checkbox').on('click', function(e){
var selected = $('.masonry :checkbox:checked');
if( selected.length > 6 ){
alert( 'Sorry, no more than 6' );
e.preventDefault(); // stops the checkbox from being selected
return;
}
// do what you wish with the selected ones
// selected.each()
})