获取异常 - TypeError:无法读取 null 的属性“style”TypeError:
2020-09-11
478
我是这方面的新手,如果能得到任何帮助,我将不胜感激。因此,我在 Sharepoint 列表中有一个要求。当任何任务逾期时,我需要为列着色。我有一个日期时间列,它是 SharePoint 中的计算字段,还有一个状态列,它是一个下拉列表 - 我正在使用以下代码
<script type="text/javascript">
SP.SOD.executeFunc("clienttemplates.js", "SPClientTemplates", function() {
SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
OnPostRender: function(ctx) {
var today = new Date();
var rows = ctx.ListData.Row;
for (var i=0;i<rows.length;i++){
var status = rows[i]["Status"];
var dateDue= new Date(rows[i]["DateTime"]);
var rowId = GenerateIIDForListItem(ctx, rows[i]);
var row = document.getElementById(rowId);
if(dateDue<today&&status!="Complete"){
row.style.backgroundColor = "yellow";
}
}
}
});
});
</script>
现在,当我编辑 SharePoint 列表中任何项目中的日期或状态字段时。我收到以下异常 TypeError:无法读取 null 的属性“style” TypeError:无法读取 null 的属性“style”TypeError:无法读取 null 的属性“_events”
当我再次加载列表时 - 它工作正常,如果满足条件,它会将字段颜色为黄色。为什么我会收到此异常。
1个回答
如果这是我遇到的同一问题(仅发生在第二页),我相信 SharePoint 正在提取未显示但脚本正在读取的信息。
在 if 语句之前添加空行过滤器可让脚本运行,而无需尝试将样式应用于未呈现的行。您可以将其与现有
if
语句中的
&&
结合使用。
选项 1:
if (row != null) {
if(dateDue<today&&status!="Complete"){
row.style.backgroundColor = "yellow";
}
}
选项 2:
if(dateDue<today&&status!="Complete"&&row!=null){
row.style.backgroundColor = "yellow";
}
MGaines
2021-05-24