添加一些功能后,MaterializeCss可折叠元素“折叠”了

时间:2019-04-04 20:22:53

标签: javascript materialize

我使用MaterializeCss可折叠元素。我在模板HTML文件中使用JavaScript对其进行了初始化:

//activates collapsible bars
var collaps = document.querySelectorAll('.collapsible');
M.Collapsible.init(collaps);

然后,我向该文件添加了一些功能(不同时间的不同功能),可折叠功能停止工作:当我按下该文件时,它不会展开。

我不使用任何其他框架。

我读过其他与此类似的主题,人们说这是因为array.push方法的缘故,并建议重新初始化可折叠对象。

我尝试重新初始化,但没有任何改变。
我可能做得不正确,或者还有其他问题。

为什么会发生这种情况以及如何解决它的理论是什么?

我现在添加的功能如下(我没有为我的数据修改它们,但是这发生了)。这与读取复选框和<a>标签(可折叠元素中的元素)的值并调用后端函数有关。

function getCheckedNames() {
    
     //getting all checkboxes
  const allCheckboxes = Array.from(document.getElementsByClassName("filled-in"));

  //getting all <a> tag elements as a native Array.
  const names = Array.from(document.getElementsByTagName("a"));

  //Reduce from all names to only those that are "checked."
  return allCheckboxes.reduce((arr, cb, i) => {
    // Store the corresponding employee name for any checked checkbox 
    if (cb.value === true)
      arr.push(names[i].value);
   
      return arr;
  }, []);
 }


function requestCals() {

 const chosenNames = function getCheckedNames()
 
 google.script.run
    .withUserObject(chosenNames)
    .withSuccessHandler(requestCalendarEvents)
    .loopToGetCals(JSON.stringify({names: chosenNames}));
}

    
function requestCalendarEvents(calendars, chosenNames) {

 if (typeof calendars === "string")
    calendars = JSON.parse(calendars);
  if (typeof chosenNames === "string")
    chosenNames = JSON.parse(chosenNames);
  if (!chosenNames)
    chosenNames = getCheckedNames();

   const employees = {
    names: chosenNames,
    cals: calendars
  };
  
   //read inputs of start and end dates
  const startdate = document.getElementById("startDate").value
  const enddate = document.getElementById("endDate").value
  

   //getting dates as UTC milliseconds
  const startDate = new Date(startdate).getTime();
  const endDate = new Date(enddate).getTime();
  

  //call backend function to get calendar events
  google.script.run
    .withSuccessHandler(getCalendarEvents)
    .getCalendarEvents(JSON.stringify(employees) startDate, endDate);
}

0 个答案:

没有答案