Javascript 我不断得到';无法获取属性';长度';未定义或空引用的';

Javascript 我不断得到';无法获取属性';长度';未定义或空引用的';,javascript,dynamics-crm,crm,undefined-reference,dynamics-crm-2015,Javascript,Dynamics Crm,Crm,Undefined Reference,Dynamics Crm 2015,我正在测试一段更大的代码的独立部分,以实现MS CRM中的功能,我想知道为什么我总是在这段小代码中出现上述错误: function testThis() { var optionset = document.getElementById("new_makeyear"); console.log("this is supposed to be something " + optionset.Options.length); } “新年”是一个选项集。log语句只是为了让我可以通过

我正在测试一段更大的代码的独立部分,以实现MS CRM中的功能,我想知道为什么我总是在这段小代码中出现上述错误:

function testThis()
{
    var optionset = document.getElementById("new_makeyear");
    console.log("this is supposed to be something " + optionset.Options.length);
}
“新年”是一个选项集。log语句只是为了让我可以通过控制台看到行为。有什么问题吗


谢谢

正如亨克在评论中提到的,您不应该访问DOM。您应该使用API检查选项集的选项,如下所示:

函数testThis(){
var makeYear=Xrm.Page.getAttribute(“new_makeYear”);
如果(!makeYear){return;}
log(makeYear.getOptions().length+“当前可用的选项”);
}

正如亨克在评论中提到的,您不应该访问DOM。您应该使用API检查选项集的选项,如下所示:

函数testThis(){
var makeYear=Xrm.Page.getAttribute(“new_makeYear”);
如果(!makeYear){return;}
log(makeYear.getOptions().length+“当前可用的选项”);
}

如果您设法访问生成的DOM(例如通过onchange事件),则optiongroup可作为
if(this.options[this.selectedIndex].parentNode.tagName=='optgroup')

var og=this.options[this.selectedIndex].parentNode.label

如果您设法访问生成的DOM(例如通过onchange事件),则optiongroup可作为
if(this.options[this.selectedIndex].parentNode.tagName=='optgroup')

var og=this.options[this.selectedIndex].parentNode.label

optionset
是一个DOM元素;您确定它具有
Options
属性吗?不支持在Dynamics CRM web窗体上访问DOM。当需要访问特定字段时,请查看
Xrm.Page.getAttribute()
Xrm.Page.getControl()函数。属于这些字段的DOM元素的名称后缀为下划线+字符。您使用DOM方法而不是使用Xrm对象模型方法的任何特定原因?
optionset
是DOM元素;您确定它具有
Options
属性吗?不支持在Dynamics CRM web窗体上访问DOM。当需要访问特定字段时,请查看
Xrm.Page.getAttribute()
Xrm.Page.getControl()函数。属于这些字段的DOM元素的名称后缀为下划线+字符。您使用DOM方法而不是使用Xrm对象模型方法有什么特殊原因吗?此解决方案给了我以下错误:“对象不支持属性或方法‘getOptions’”@CarlosFarmer Whoops,Xrm.Page.getControl应该是Xrm.Page.getAttribute。我更新了答案。此解决方案给了我以下错误:“对象不支持属性或方法‘getOptions’”@CarlosFarmer Whoops,Xrm.Page.getControl应该是Xrm.Page.getAttribute。我更新了我的答案。