0

私は、MS CRMの機能性のために大きなコードを独立してテストしています。この小さなコードは、未定義またはnull参照のプロパティ '長さ'を取得できません。

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

Xrmオブジェクトモデルアプローチを使用するのではなくDOMアプローチを使用している特定の理由はありますか? – 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 Whoops、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;

関連する問題