0

我正在测试MS CRM中功能性较大的一段代码的独立部分,我想知道为什么我不断收到上述错误这小段代码:我一直''未定义或空引用''无法获得属性'长度'

function testThis() 
{ 
    var optionset = document.getElementById("new_makeyear"); 
    console.log("this is supposed to be something " + optionset.Options.length); 
} 

“new_makeyear”是一个选项集。日志声明只是让我可以通过控制台看到行为。有什么问题?

谢谢

+1

' optionset'是一个DOM元素;你确定*它有一个'Options'属性? –

+2

不支持在Dynamics CRM Web表单上访问DOM。当您需要访问特定的字段时,请查看'Xrm.Page.getAttribute()'和'Xrm.Page.getControl()'函数。属于这些字段的DOM元素的名称后缀为下划线+字符。 –

+0

您使用DOM方法而不是使用Xrm对象模型方法的任何特定原因? – Renjith

回答

2

正如Henk在他的评论中提到的,你不应该访问DOM。您应该使用API​​来检查的选项设置的选项,如下所示:

function testThis() { 
    var makeYear = Xrm.Page.getAttribute("new_makeyear"); 
    if (!makeYear) { return; } 
    console.log(makeYear.getOptions().length + " options currently available"); 
} 
+0

此解决方案给了我以下错误:“对象不支持属性或方法'getOptions'” –

+0

@CarlosFarmer哎呀,Xrm.Page.getControl应该是Xrm.Page.getAttribute。我更新了我的答案。 – Polshgiant

0

如果管理(通过onchange事件为例)来访问生成的DOM然后选项组可作为 if(this.options[this.selectedIndex].parentNode.tagName =='optgroup') var og = this.options[this.selectedIndex].parentNode.label;

相关问题