获取异常 - 类型错误: 无法读取 null 类型的属性"样式"错误:



我是这方面的新手,如果能得到任何帮助,我将不胜感激。所以我在Sharepoint列表中有一个要求。当任何任务过期时,我需要为列着色。我有一个Datetime列,它是sharepoint中的一个计算字段,还有一个Status列是下拉列表-我正在使用以下代码

<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>

现在,当我编辑共享点列表中任何项目的日期或状态字段时。我得到以下异常TypeError:无法读取null的属性"style"TypeError:无法读取null的属性"style"TypeError:不能读取null 的属性"_events">

当我再次加载列表时,它工作正常,如果满足条件,它会将字段涂成黄色。为什么我会得到这个例外。

如果这与我在第二个页面上遇到的问题相同,我相信SharePoint正在获取未显示但脚本正在读取的信息。

在if语句之前为null行添加一个筛选器,可以让脚本在不尝试将样式应用于未渲染的行的情况下运行。您可以将其与现有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";
}

相关内容