根据数组中的值更改div的css样式

时间:2018-05-16 07:54:31

标签: php css fullcalendar

我已经在Stackoverflow上尝试了各种方法,但似乎都没有帮助。

我在我的fullcalendar上添加了hall_no,而hall_no有三个选项,

  1. Hall A
  2. Hall B
  3. A + B厅。
  4. 我想根据hall_no中的值更改(.fc-event)div的背景颜色。

    $data_events = array();
    
     foreach($events->result() as $r) {
    
         $data_events[] = array(
             "id" => $r->id,
             "title" => $r->name . "\n" . "\n" . $r->hall_no,
             "end" => $r->end,
             "start" => $r->start
         );
     }
    
     echo json_encode(array("events" => $data_events));
     exit();
     }
    
    public function halla(){
        if (isset($_GET['hall_no'])){
            $query = $_GET['hall_no'];
        }else{
            $query = NULL;
        }
    }
    
    public function hallb(){
        if ($query == 'Hall A'){
                "<style>
                    .fc-event{background-color:#00cc00;}
                </style>"
        }elseif ($query == 'Hall B'){
                "<style>
                    .fc-event{background-color:#ff1a8c;}
                </style>"
        }else{
                "<style>
                    .fc-event{background-color:#00ffff;}
                </style>"
        }
    }
    

    我也尝试了in_array()函数:

    $data_events = array();
    
     foreach($events->result() as $r) {
    
         $data_events[] = array(
             "id" => $r->id,
             "title" => $r->name . "\n" . "\n" . $r->hall_no,
             "end" => $r->end,
             "start" => $r->start
         );
     }
    
     echo json_encode(array("events" => $data_events));
     exit();
     }
    
    if (in_array("Hall A", $data_events))
          {
          "style=.fc-event{background-color:#00cc00} ";
          }
        elseif (in_array("Hall B", $data_events))
          {
          "style=.fc-event{background-color:#ff1a8c} ";
          }
        else
          {
          "style=.fc-event{background-color:#00ffff} ";
          }
    

2 个答案:

答案 0 :(得分:1)

Fullcalendar实际上有一项功能可以通过在您的活动中设置属性来支持您这样做。然后,fullCalendar将自动处理生成的HTML元素的颜色。

请参阅https://fullcalendar.io/docs/event-object - 您可以选择:

  

“color”:设置事件的背景和边框颜色

  

“backgroundColor”:设置事件的背景颜色

所以你可以简单地做这样的事情:

foreach($events->result() as $r) {
    $color = "";
    switch ($r->hall_no) {
      case "Hall A":
        $color = "#00cc00";
        break;
      case "Hall B":
        $color = "#ff1a8c";
        break;
      default:
        $color = "#00ffff";
        break;
    }

    $data_events[] = array(
      "id" => $r->id,
      "title" => $r->name . "\n" . "\n" . $r->hall_no,
      "end" => $r->end,
      "start" => $r->start,
      "color" => $color
    );
}

现在每个事件都将根据与之关联的“Hall_no”值进行着色。

P.S。基于编写<style>元素的解决方案将无法工作,因为基于“fc-event”类的规则将影响所有事件元素,因为它们都包含该类,而不是只是具有特定数据值的那些。

答案 1 :(得分:-1)

你没有回应你通过php应用的风格。

echo "style=.fc-event{background-color:#00cc00} ";