Развернутый элемент MaterializeCss «свернулся» после добавления некоторых функций - PullRequest
0 голосов
/ 04 апреля 2019

Я использую разборный элемент MaterializeCss.Я инициализировал его с помощью JavaScript в шаблонном html-файле:

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

Затем я добавил несколько функций (разных функций в разное время) к этому файлу, и разборная система перестала работать: когда я нажимаю на нее, она не 't раскрыть.

Я не использую никакой другой фреймворк и т. д.

Я читал другие темы, подобные этой, где люди говорят, что это из-за методов 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);
}
...