我正在尝试使用JavaScript添加一个带有onclick
事件的CSS类。
这是我的html。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="weekly.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.1/css/all.min.css" integrity="sha512-MV7K8+y+gLIBoVD59lQIYicR65iaqukzvf/nwasF0nqhPay5w/9lJmVM2hMDcnK1OnMGCdVK+iQrJ7lzPJQd1w==" crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
<body>
<div class="sf_new_calendar_weekly_container">
<div class="sf_day_card">
<div class="sf_day_card_heading">
<h5>MON</h5>
<p>January 9</p>
</div>
<div class="events">
<div class="sf_parks_hours">
<div class="sf_general_hours">
</div>
<div class="sf_park_events_hours">
</div>
<div class="sf_park_events_hours">
</div>
</div>
</div>
</div>
<div class="sf_day_card">
<div class="sf_day_card_heading">
<h5>TUE</h5>
<p>January 10</p>
</div>
<div class="events"><div class="sf_parks_hours">
<div class="sf_general_hours">
</div>
<div class="sf_park_events_hours">
</div>
<div class="sf_park_events_hours"></div>
</div></div>
</div>
<div class="sf_day_card">
<div class="sf_day_card_heading">
<h5>WED</h5>
<p>January 11</p>
</div>
<div class="events">
<div class="sf_parks_hours">
<div class="sf_general_hours">
</div>
<div class="sf_park_events_hours">
</div>
<div class="sf_park_events_hours">
</div>
</div>
</div>
</div>
<div class="sf_day_card_open sf_day_card_open_yellow ">
<div class="sf_day_card_heading bg_yellow">
<h5>THU</h5>
<p>January 12</p>
</div>
<div class="events">
<div class="sf_parks_hours">
<div class="sf_general_hours">
<i class="fa-regular fa-clock"></i>
<p>10AM - 6PM</p>
</div>
<div class="sf_park_events_hours">
<p class="event-title">Water Park</p>
<p class="event-hours">10AM - 6PM</p>
</div>
<div class="sf_park_events_hours">
<p class="event-title">Safari</p>
<p class="event-hours">10AM - 6PM</p>
</div>
<hr>
</div>
<div class="sf_events">
<div class="sf_park_event_heading">
<i class="fa-regular fa-flag"></i>
<p class="event_name">Pass Holder Appreciation Week</p>
</div>
<div class="sf_park_event_heading">
<i class="fa-regular fa-flag"></i>
<p class="event_name">Christmas in the Park</p>
</div>
</div>
</div>
</div>
<div class="sf_day_card_open">
<div class="sf_day_card_heading ">
<h5>FRI</h5>
<p>January 13</p>
</div>
<div class="events">
<div class="sf_parks_hours">
<div class="sf_general_hours">
<i class="fa-regular fa-clock"></i>
<p class="event-hours">10AM - 6PM</p>
</div>
<div class="sf_park_events_hours">
</div>
<div class="sf_park_events_hours">
</div>
</div>
</div>
</div>
<div class="sf_day_card_open">
<div class="sf_day_card_heading">
<h5>SAT</h5>
<p>January 14</p>
</div>
<div class="events">
<div class="sf_parks_hours">
<div class="sf_general_hours">
<i class="fa-regular fa-clock"></i>
<p class="event-hours">10AM - 6PM</p>
</div>
<div class="sf_park_events_hours">
</div>
<div class="sf_park_events_hours">
</div>
</div>
</div>
</div>
<div class="sf_day_card">
<div class="sf_day_card_heading">
<h5>SUN</h5>
<p>January 15</p>
</div>
<div class="events">
<div class="sf_parks_hours">
<div class="sf_general_hours">
</div>
<div class="sf_park_events_hours">
</div>
<div class="sf_park_events_hours">
</div>
</div>
</div>
</div>
</div>
</div>
<script src="script.js"></script>
</body>
</html>
这是我的脚本,我用一个类来定位div。
let heading = document.querySelectorAll(".sf_day_card_heading");
我想添加一个CSS类,将我选择的div的背景颜色更改为黄色,但我不知道如何开始逻辑。
我知道我必须使用onclick
事件执行函数并添加CSS类,但我不知道如何操作。
6条答案
按热度按时间yrwegjxp1#
这可能有助于:首先,您需要向HTML div标记添加一个id:
然后在javascript中添加事件监听器:
了解更多:Event Target addEventListener
如果有帮助,请标记。
unhi4e5o2#
这会将类添加到您单击的元素中,并从其他元素(类似元素)中删除该类
如果有帮助就告诉我。
xmd2e60i3#
向
document
对象添加一个事件监听器,监听click
事件。每当发生单击时,检查用户是否单击了.sf_day_card_heading
div(或在其中)。根据结果添加类。wqnecbli4#
试试这个:
在第一行中,选择所有图元:
接下来,在
activeDiv()
中,从每个元素中删除每个bg_yellow
类,并将类bg_yellow
仅添加到一个元素中:最后,将
click
事件附加到heading
数组中的每个元素,该数组调用activeDiv()
函数来添加一个类:gstyhher5#
一旦你在一个变量中有了特定的元素,你就可以用它来访问属性。2在你的例子中,你可以通过以下方式来使用CSS:
xlpyo6sf6#
使用
document.querySelectorAll
可以正确获取元素。为了侦听每个元素上的单击事件,可以添加循环并添加事件侦听器。事件侦听器的工作原理与
onclick
等HTML属性类似,但通常被认为更可靠,原因有很多,包括一个元素可以有多个事件侦听器用于同一事件,而它只能有一个onclick
属性。要切换元素上的CSS类,可以使用
element.classList.toggle(className)
在本例中,可以使用
for...of
loop循环遍历元素,并使用addEventListener
为每个元素添加一个事件侦听器,然后在事件侦听器中切换黄色CSS类:您可以在CSS中使用类似以下的代码:
希望这个有用。