Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在FullCalendar中单击事件时突出显示整个事件_Javascript_Jquery_Css_Fullcalendar_Fullcalendar 4 - Fatal编程技术网

Javascript 如何在FullCalendar中单击事件时突出显示整个事件

Javascript 如何在FullCalendar中单击事件时突出显示整个事件,javascript,jquery,css,fullcalendar,fullcalendar-4,Javascript,Jquery,Css,Fullcalendar,Fullcalendar 4,当用户单击时,我试图突出显示日历上的事件。我已经有了一些基本的代码,但它没有像我期望的那样工作。我的代码现在的工作方式只是突出显示一周,直到活动结束,如日历所示。这是我的一些代码 document.addEventListener('DOMContentLoaded', function() { var calendarEl = document.getElementById('calendar'); var lang = document.getElementsByTagName('h

当用户单击时,我试图突出显示日历上的事件。我已经有了一些基本的代码,但它没有像我期望的那样工作。我的代码现在的工作方式只是突出显示一周,直到活动结束,如日历所示。这是我的一些代码

document.addEventListener('DOMContentLoaded', function() {
  var calendarEl = document.getElementById('calendar');
  var lang = document.getElementsByTagName('html')[0].getAttribute('lang');
  if(lang == 'hy'){
    var language = hyLocale;
  }else if(lang == 'ru'){
    var language = ruLocale;
  }else{
    var language = 'en';
  }
  var calendar = new Calendar(calendarEl, {
    locales: [ ruLocale, hyLocale],
    locale: language,
    plugins: [dayGridPlugin],
    events: '/events/get',
    eventClick: function(info) {

      // This is where it resets the highlight when user clicks on another event
      $('.fc-event-container a').css('background-color', '#3788d8');


      // This is where i set the background color of the event when user clicks
      $(info.el).css('background-color', '#00da4a');
      $('#info-container').empty();

      var html = 'basic html for div';
      $('#info-container').append(html);
    }

  });
这是前端的外观


即使在下个月,我也要强调整个事件。

我一直在做类似的事情。所以,我想和大家分享我的想法。 看看它是否适合你。 我所做的是在代码中为每个事件分配一个id,比如, 事件1的Id为:no1,事件2的Id为:no2等。 然后我将事件id作为类名分配给事件,因此它会将其分配给事件拉伸的每个元素。 守则如下:

eventRender: function(info) {
    info.el.className += " " + info.event.id + " ";
}
eventClick: function (info) {
    $('.'+info.event.id).css("background-color", "#00da4a");
}
eventClick: function (info) {
   gEventId = info.event.id;
   $('.'+ info.event.id).css("background-color", "#00da4a");
}
在eventClick中,使用该类在运行时分配css,如下所示:

eventRender: function(info) {
    info.el.className += " " + info.event.id + " ";
}
eventClick: function (info) {
    $('.'+info.event.id).css("background-color", "#00da4a");
}
eventClick: function (info) {
   gEventId = info.event.id;
   $('.'+ info.event.id).css("background-color", "#00da4a");
}
请注意,它分配了css,但要删除该css并应用于其他事件元素,我将把该逻辑留给您:)

更新:

单击“下一个”或“上一个”时,事件将一直延续到下一个月或上一个月,您可能需要使用全局事件id变量来存储选定的事件id。 在单击“下一步”和“上一步”按钮时,您可以使用所选事件id更改该事件的颜色

例如:

var gEventId = 0;
document.addEventListener("DOMContentLoaded", function () {
   // First Call the Calendar Render code here...
   $('.fc-next-button, .fc-prev-button').click(function(){
      if (gEventId > 0)
      {
         $('.'+ gEventId).css("background-color", "#00da4a");
      }
   });
});
gEventId保存在eventClick中,如下所示:

eventRender: function(info) {
    info.el.className += " " + info.event.id + " ";
}
eventClick: function (info) {
    $('.'+info.event.id).css("background-color", "#00da4a");
}
eventClick: function (info) {
   gEventId = info.event.id;
   $('.'+ info.event.id).css("background-color", "#00da4a");
}

要将所选事件id回滚到0,您可以再次单击该事件,或提供其他方法取消选择该事件。逻辑很简单,您需要检查单击的事件id是否与已选择的事件id(存储在gEventId中的值)相同,然后将gEventId设置为0并取消选择高亮显示的背景,否则高亮显示背景颜色并将gEventId设置为事件id。

我想您可能发现了一个小错误。我可以在这里复制您的问题:。如果您愿意,您可以使用该代码笔作为创建的基础。在这种情况下(以及其他情况,例如在timeGrid视图中),事件有时可能由多个HTML元素表示。回调中的
info.el
只允许您访问实际单击的内容。理想情况下,它应该允许您访问表示单个事件的所有元素的集合。@ADyson我知道这一点。我只是在寻找解决方案,谢谢。我的意思是,没有解决方案。如果查看呈现的HTML,则无法确定哪些元素构成同一事件的一部分。它需要在完整的日历内修复。因此,我建议做一个bug报告。@ADyson我甚至在考虑获取跨度的文本,然后突出显示具有相同文本的其他行。很“不太专业”,但嘿,我能做什么呢?这是一个预兆,你可能会侥幸逃脱。但是如果你因为某种原因有两个相同标题的活动,它就会掉下来。谢谢你的回答,但是一旦你改变了标题,它就不会保持颜色了month@Areg,我更新了这个逻辑的答案。如果解决方案对您有效,请标记并接受答案,谢谢:)奇怪。就像我可以看到,当你现在点击一个月的时候,背景颜色会发生变化,但只有一微秒。之后会重置为蓝色。现在,每当我点击下个月,它就会闪烁绿色,然后重新设置为blue@Areg,请在主要问题的末尾分享最新代码。写更新,然后在下面只写更新后的完整日历代码。@Areg,这是我试过的代码笔,它似乎按预期工作: