提问人:Carlos Farmer 提问时间:4/23/2016 更新时间:4/25/2016 访问量:811
我一直收到“无法获取未定义或空引用的属性'长度'”
I keep getting 'unable to get property 'length' of undefined or null reference'
问:
我正在测试MS CRM中较大代码段的独立部分的功能,我想知道为什么我不断收到这一小段代码的上述错误:
function testThis()
{
var optionset = document.getElementById("new_makeyear");
console.log("this is supposed to be something " + optionset.Options.length);
}
“new_makeyear”是一个选项集。log 语句只是为了让我可以通过控制台查看行为。怎么了?
谢谢
答:
2赞
Polshgiant
4/24/2016
#1
正如 Henk 在他的评论中提到的,你不应该访问 DOM。您应该使用 API 来检查选项集的选项,如下所示:
function testThis() {
var makeYear = Xrm.Page.getAttribute("new_makeyear");
if (!makeYear) { return; }
console.log(makeYear.getOptions().length + " options currently available");
}
评论
0赞
Carlos Farmer
4/25/2016
此解决方案给了我以下错误:“对象不支持属性或方法'getOptions'”
0赞
Polshgiant
4/25/2016
@CarlosFarmer Whoops,Xrm.Page.getControl 应该是 Xrm.Page.getAttribute。我更新了我的答案。
0赞
Alex Kudryashev
4/24/2016
#2
如果您设法访问生成的 DOM(例如通过 onchange 事件),则 optiongroup 可作为if(this.options[this.selectedIndex].parentNode.tagName =='optgroup')
var og = this.options[this.selectedIndex].parentNode.label;
评论
optionset
是一个 DOM 元素;你确定它有属性吗?Options
Xrm.Page.getAttribute()
Xrm.Page.getControl()