Я использую разборный элемент 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);
}