gpt4 book ai didi

JavaScript if else 在全日历上设置事件颜色的条件不起作用

转载 作者:行者123 更新时间:2023-12-03 00:55:30 30 4
gpt4 key购买 nike

我正在使用完整日历 ( http://fullcalendar.io ) 来实现日历。我的数据库中有一个表,其中包含以下行 - DB table

这是我的观点 -

@model IEnumerable<Fit.Models.Events>

@{
ViewBag.Title = "Calendar";
Layout = "~/Views/Shared/_Layout.cshtml";
}

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title - Fit</title>
<link href="~/Content/fullcalendar.min.css" rel="stylesheet" />
<link href="~/Content/calendar.css" rel="stylesheet" />
<link href="~/Content/jquery-ui.theme.min.css" rel="stylesheet" />
</head>
<body>

<div id="calendar"></div>
<div style="display: none">

<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Title)
</th>
<th>
@Html.DisplayNameFor(model => model.StartTime)
</th>
<th>
@Html.DisplayNameFor(model => model.EndTime)
</th>
<th>
@Html.DisplayNameFor(model => model.User.FirstName)
</th>
<th>
@Html.DisplayNameFor(model => model.IsConfirmed)
</th>
</tr>

@foreach (var item in Model)
{
<tr class="events">
<td class="title">
@Html.DisplayFor(modelItem => item.Title)
</td>
<td class="start">
@Html.DisplayFor(modelItem => item.StartTime)
</td>
<td class="end">
@Html.DisplayFor(modelItem => item.EndTime)
</td>
<td>
@Html.DisplayFor(modelItem => item.User.FirstName)
</td>
<td class="confirmed">
@Html.DisplayFor(modelItem=> item.IsConfirmed)
</td>
</tr>
}

</table>
</div>
</body>
</html>

@section Scripts {
@Scripts.Render("~/bundles/calendar")
}

这是 JavaScript -

var events = [];
$(".events").each(function () {
var title = $(".title", this).text().trim();
var start = $(".start", this).text().trim();
var end = $(".end", this).text().trim();
var allDay = "false";
var confirmed = $(".confirmed", this).text().trim();
var colour = "green";
var textColour = "white";
if (confirmed == "False") {
colour = "yellow";
textColour = "red";
}

var event = {
"title": title,
"start": start,
"end": end,
"allDay": allDay,
"color": colour,
"textColor": textColour
};
events.push(event);
});

$("#calendar").fullCalendar({
themeSystem: 'jquery-ui',
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay,listMonth'
},
locale: 'au',
events: events,
selectable: true,
selectOverlap: false,
validRange: function (nowDate) {
return {
start: nowDate.subtract(1,'days')
};
},
handleWindowResize: true,
height: 450,
aspectRatio: 0.5,
displayEventTime: true,
timeFormat: 'H:mm',

select: function (start, end, allDay, jsEvent, view) {
var d = new Date(start);
var d2 = new Date(end);
var m = new moment(d).format("DD-MM-YYYY HH:mm:ss");
var m2 = new moment(d2).format("DD-MM-YYYY HH:mm:ss");
m = encodeURIComponent(m);
m2 = encodeURIComponent(m2);
var uri = "/Events/Create?date=" + m + "&date2=" + m2;
$(location).attr('href', uri);
}
});

问题在于尝试设置日历上事件的颜色时。我的目的是为 IsConfirmed 为 True 的事件设置绿色和白色,为 IsConfirmed 为 False 的事件设置黄色和红色。目前,这两个事件均以绿色和白色显示,这是不正确的,因为其中一个事件的 IsConfirmed 为 false。

我做错了什么?如果我错过了什么,请告诉我!

最佳答案

所以我弄清楚出了什么问题。 IsConfirmed 属性是一个 bool 属性(我应该在我原来的帖子中提到这一点,我的错。我认为它不相关)。这就是问题的原因。

为了弄清楚发生了什么,我在 Javascript 中编写了 console.log(confirmed) 来检查它是否从我的 HTML 中获取了值。里面是空的。我删除了尾随的 .text().trim() 然后再次检查。这次控制台显示一个对象已被解析。因此,我们可以通过解析 HTML 来获取对象,但不能从中获取文本。

然后看看@ADyson的JSFiddle在上面的评论中,我看到他使用 IsConfirmed 的字符串值。这让我想知道该字段的数据类型是否导致了一些问题。

在浏览器上查看页面的源代码,我发现 @Html.DisplayFor 将 IsConfirmed 属性转换为用于显示的复选框,而不是值。所以没有办法将复选框转换为文本(我在 JavaScript 中所做的)。

在研究这个问题时,我达到了 here

我将 IsConfirmed 的 @Html.DisplayFor 更改为 @Html.DisplayTextFor ,这解决了问题。

关于JavaScript if else 在全日历上设置事件颜色的条件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52860453/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com