2016-06-28 2 views
0

以下のコードはキャッチしません。TypeError:nullの 'checked'プロパティを設定できません。 チェックボックスをオンにしてプログラムで設定する正しい方法は何ですか?まあDojoを使用してプログラマチックにチェック・ボックスのチェックを設定する

 array.forEach(this._getAllCheckBoxIDs(), function(item){ 
      dom.byId(item).checked = true; 
     }, this); 
+0

これは正しいですが、 'dom.byId(項目)' '戻っnull'なので、私は' this._getAllCheckBoxIDs(賭けます) 'あなたが期待しているものを返さない... jsfiddleでより良いヘルプを提供することができる – ben

+0

_getAllCheckBoxIDs()関数のコンテンツを共有できますか? –

+0

あなたの返信をよろしくお願いします。 _getAllCheckBoxIDs()が呼び出されたときにチェックボックスが作成されていないことが判明しました。 –

答えて

0

、あなたは道場のチェックボックスのコレクションを持っている場合は、その属性を更新するDOMNODEだと一緒にチェックボックスDojoウィジェットを必要とするので、私はregistry.byIdの代わりdojo.byIdを使用するためにあなたをお勧めします。

道場クラス名: -

dijit/registry 

例: - これはあなたを助けることを望ん詳細please click here...

ため

// require registry class first 
array.forEach(this._getAllCheckBoxIDs(), function(item){ 
    registry.byId(item).set("checked", true); 
}, this); 

:)

+0

"this._getAllCheckBoxIDs()"にはdojoチェックボックスのIDだけが含まれていることを確認してください。 上記の解決策がうまくいかない場合は、お気軽に質問してください... –

+1

dijitウィジェットの適切なライフサイクルを使用するには、代わりにwidget.set( 'checked'、true);を使用します。 – GibboK

+0

yup .. Gibbok ..(y) –

0

T次の例は、ウィジェットのプロパティcheckedを設定する方法のプログラム例を示しています。

このスクリプトは、dijit/registryを使用して、DOMのクエリとは逆のチェックボックスの参照を取得します。代わりに、このようなあなたのウィジェットのプロパティを直接設定する

:これはウィジェットのライフサイクルが正常に動作することができます

widgetReference.set('checked', true); 

dom.byId(item).checked = true; 

私は次のようにセッターを使用してお勧めします。

ここに住ん例:

https://jsfiddle.net/femtf4uh/

require(["dijit/form/CheckBox", "dijit/registry", "dijit/form/Button", "dojo/domReady!"], function(CheckBox, registry, Button) { 
    new CheckBox({ 
    id: "checkBox0", 
    name: "checkBox0", 
    value: "option0", 
    checked: false, 
    onChange: function(event) { 

    } 
    }, "checkBox0").startup(); 
    new CheckBox({ 
    id: "checkBox1", 
    name: "checkBox1", 
    value: "option1", 
    checked: false, 
    onChange: function(event) { 

    } 
    }, "checkBox1").startup(); 

    var markCheckAll = function() { 
    registry.toArray().forEach(function(widget) { 
     if (widget.type === 'checkbox'){ 
     widget.set('checked', true); 
     } 
    }); 
    }; 
    markCheckAll(); 

}); 

<input id="checkBox0" /> 
<label for="checkBox">Option 0</label> 
<br> 
<input id="checkBox1" /> 
<label for="checkBox">Option 1</label> 
<br> 
関連する問題