myArray.push(jQuery)不工作

myArray.push(jQuery)不工作,jquery,html,Jquery,Html,所以基本上,我正在尝试解决我的编码之谜的这一部分 1代码1-选择框>更改颜色 function myFunction(id){ myClass(id); selectedChecker(id); } //FUNCTION TO CHANGE BACKGROUND COLOR ONCE SELECTED function myClass(id){ var displayCheckedIcon = '<i class="fa fa-check" aria-hidden="true">&

所以基本上,我正在尝试解决我的编码之谜的这一部分

1代码1-选择框>更改颜色

function myFunction(id){
myClass(id);
selectedChecker(id);
}

//FUNCTION TO CHANGE BACKGROUND COLOR ONCE SELECTED
function myClass(id){
var displayCheckedIcon = '<i class="fa fa-check" aria-hidden="true"></i>';
var currentClass = jQuery(".currentIcon"+id);

//TOGGLE THE COLOR CLASS
jQuery(".slotRow"+id).toggleClass("selectedCell tbselection"); 

//TOGGLE TO WHITE FONT CLASS ONCE SELECTED
jQuery(".fontCurrent"+id).toggleClass("fontColorSelected fontOriginal"); 

//CONDITION TO DISPLAY THE 'CHECKED' ICON ONCE CLICKED
if (currentClass.hasClass('uncheckedIcon')) {
    jQuery(".currentIcon"+id).toggleClass("checkedIcon uncheckedIcon");
    jQuery(".currentIcon"+id).html(displayCheckedIcon);
}
else if(currentClass.hasClass("checkedIcon")) {
    jQuery(".currentIcon"+id).toggleClass("uncheckedIcon checkedIcon");
    jQuery(".currentIcon"+id).html("");
  }
}
3代码3-HTML代码循环

<td id="<?php echo $iSlotId;?>" align="center" style="width:30%;" bgcolor="<?php echo $color; ?>" onclick="myFunction(id)" name="arrCheckboxSlot[]" class="f_13 gray3 tbselection slotRow<?php echo $iSlotId;?>" value="<?php echo $iSlotId;?>">
  <input name="arrCourtId[]" value="<?php echo $iCourtId;?>" type="hidden">
    <a href="javascript:void(0);" class="f_13 gray3 fontOriginal fontCurrent<?php echo $iSlotId;?>" style="text-decoration:none; font-size:12px;"><?php echo $sSlotName;?>&nbsp;<span  id="<?php echo $iSlotId;?>"  class="currentIcon<?php echo $iSlotId;?> uncheckedIcon"></span></a>
</td>
问题是,一旦我点击了这个框,推送功能就不起作用了。它不会把任何东西推到我的数组中

你们能指出我的错误吗?提前感谢

试试这个

 function selectedChecker(id){
    var data = []; //ARRAY TO STORE SLOT ID 
    var selectedClass = jQuery(".slotRow"+id);
    jQuery(selectedClass).each(function(){
        // CHECK IF GOT SELECTED, PUSH ID INTO ARRAY
        if(jQuery(selectedClass).hasClass("selectedCell")){

            data.push((selectedClass).attr("id"));
            return jQuery(selectedClass);
        }
      }); 
    }

现在还不完全清楚您想要实现什么,但是您在每个迭代中都创建了一个新数组,并且您也从每个函数处理程序返回,而不是从父函数返回

您可以使用过滤器和映射简化逻辑。试试这个:

function selectedChecker(id) {
  var selectedClass = $(".slotRow" + id);
  return $(selectedClass).filter('.selectedCell').map(function() {
    return this.id;
  }).get(); 
}

1您在每个2的每次迭代中创建一个新数组。您的返回语句是多余的,因为它从每个处理程序返回,而不是从selectedChecker函数返回!那么,根据您的意见,我应该怎么做才能停止在每次迭代中创建这些新数组呢?我还是不知道。我为你添加了一个答案,尽管这只是一个小小的猜测,因为你期望的结果并不清楚。非常感谢你对我答案的快速回复。虽然有一次我试过你的答案,但还是不行。我会尽量利用你给我的建议。非常感谢Rory!:实际上,我正在尝试创建一个设施预订功能。将有用户可以选择的插槽列表。因此,场景是:1用户选择预订时段,正如您在图像中所看到的12单击后,selectedChecker函数应该遍历每一行并检查selectedCell类。如果有selectedCell,则它将bookingID存储到数组中。单击submit按钮后,它会将数组中的所有元素发送到php文件。这将为您构建数组。你只需要把它寄到AJAX邮箱里就行了对不起,我刚注意到我没寄到。在类选择器上。尝试更新的版本我尝试过,但仍然不起作用。顺便说一下,我刚刚编辑了这篇文章,包括了我使用Bugzilla获得的输出打印屏幕。也许,它会给我的代码出什么问题的一些想法。
function selectedChecker(id) {
  var selectedClass = $(".slotRow" + id);
  return $(selectedClass).filter('.selectedCell').map(function() {
    return this.id;
  }).get(); 
}