#javascript #html #dom #fullcalendar
#javascript #HTML #dom #полный календарь
Вопрос:
Итак, я попытался создать HTML-ввод с помощью, например, этого:
<input type="checkbox" onclick="calendar.rerenderEvents()">
Но, очевидно, она не может достичь метода. Есть ли какой-либо способ, которым я могу этого добиться?
Редактировать: я использую версию 4.0.0-beta.4
Комментарии:
1. Зачем вам нужна отдельная кнопка для повторного отображения событий? На самом деле это не делает ничего полезного, если вы не внесли какие-либо другие внеполосные изменения в календарь или его данные. Возможно, вы имели в виду повторную выборку событий для получения новых данных с сервера? И почему флажок? Ее следует использовать для принятия решения «да» / «нет», а не простую команду, которая всегда одна и та же. Не очень понятно, чего вы пытаетесь достичь.
2. Но в любом случае вы можете реализовать основную идею довольно просто, используя addEventListener. Вот демонстрационный пример: jsfiddle.net/hnu6y5v0/1 (Я использовал созданный объект «calendar», но это не имеет значения — дело в том, что он должен иметь более широкую область видимости, чем функция обработчика событий, чтобы он был доступен при запуске обработчика).
3. Это именно то, что мне было нужно. Спасибо за предоставленную демонстрацию, поскольку @decod-decod уже предлагал это, но я сделал это неправильно. Я не знал, что вам нужно объявлять функцию(), я просто поместил calendar.rerenderEvents() непосредственно в прослушиватель событий. Если бы вы могли пояснить, почему это так, я был бы очень признателен. Еще раз, большое вам спасибо. Что касается того, почему установлен флажок, я создаю категории, чтобы, когда пользователь снимает флажок, он перезапускался без этой категории событий. Надеюсь, мое объяснение было правильным.
4. Еще одна вещь (извините), не могли бы вы также пояснить, зачем нужен querySelector и почему getElementById не работает?
5. «Я не знал, что вам нужно объявлять function(), я просто поместил calendar.rerenderEvents() непосредственно в прослушиватель событий».. Ну, вам не обязательно делать это таким образом. Поскольку для rerenderEvents не требуется никаких параметров, вы можете просто сделать ее целью обработчика событий напрямую: jsfiddle.net/h4a8pqcd (только не забудьте удалить
()
, чтобы она передавала ссылку на функцию, которую можно было использовать позже, а не просто выполняла ее сразу после объявления обработчика)
Ответ №1:
Вы можете сделать это проще, используя ненавязчивый обработчик событий (созданный с помощью addEventListener
функции — затем он может ссылаться на экземпляр calendar
, который имеет более широкую область видимости в блоке сценария:
//dummy "calendar" object for the purpose of the demo
var calendar = {
rerenderEvents: function() {
alert("X");
}
}
document.querySelector("#rerender").addEventListener("click", function() {
calendar.rerenderEvents();
});
<input type="checkbox" id="rerender" /><label for="rerender">Re-Render</label>
(Я использовал созданный объект «calendar», но это не имеет значения — дело в том, что он должен иметь более широкую область видимости, чем функция обработчика событий, чтобы он был доступен при запуске обработчика.)
Ответ №2:
скрыть полный календарь при нажатии кнопки, изменив полный календарь с display: hidden на display: block
Комментарии:
1. Мне нравится идея, к сожалению, она не сработала.
2. возможно, используйте eventlistener вместо события on click, используйте queryselector или другая ошибка — это выполнение некоторого кода в js вместо использования двух разных классов и изменения класса с помощью .classname = «» это некоторые из распространенных ошибок 🙂
3. Это работает, спасибо за вашу помощь 🙂 Мне просто нужна была демонстрация, чтобы понять, как это работает.
Ответ №3:
тип ввода = «checkbox» onclick=»calendar.rerenderEvents()»>