0

テストファイルに以下があります。私がしようとしているのは、選択した値をfilteringselectからdividに書き込むことです。最初は正しく機能していますが、次回はフィルタリングが行われません (ドロップダウンに値がありません)。filteringselect の最初の変更では、onchange が正常に呼び出されます。

問題を見つけるのを手伝ってください。道場初心者です。DOJO バージョン - DOJO 1.8

<script>
    require([
        "dojo/store/Memory", "dijit/form/FilteringSelect", "dojo/domReady!"
    ], function(Memory, FilteringSelect){
        var stateStore = new Memory({
            data: [
                {name:"Alabama", id:"AL"},
                {name:"Alaska", id:"AK"},
                {name:"American Samoa", id:"AS"},
                {name:"Arizona", id:"AZ"},
                {name:"Arkansas", id:"AR"},
                {name:"Armed Forces Europe", id:"AE"},
                {name:"Armed Forces Pacific", id:"AP"},
                {name:"Armed Forces the Americas", id:"AA"},
                {name:"California", id:"CA"},
                {name:"Colorado", id:"CO"},
                {name:"Connecticut", id:"CT"},
                {name:"Delaware", id:"DE"}
            ]
        });

        var filteringSelect = new FilteringSelect({
            id: "stateSelect",
            name: "state",
            placeHolder: "Select a State",
            store: stateStore,
            searchAttr: "name",
            onChange: function(value) {
                var text1 = document.getElementById("divid").innerHTML
                document.getElementById("divid").innerHTML = text1 + dijit.byId('stateSelect').attr('displayedValue') + ';';
            }
        }, "stateSelect");
    });
</script>

<div id="divid">
    Select a State : <input id="stateSelect">
</div>
4

1 に答える 1

1

エラーは、出力をログに記録する方法によるものです。

var text1 = document.getElementById("divid").innerHTML;
document.getElementById("divid").innerHTML = text1 + [...]

「divid」には FilteringSelect dijit マークアップが含まれているため、divid.innerHTML を再度設定すると、既存の DOM が上書きされ、既存の FilteringSelect dijit インスタンスが台無しになります。通常、dijit インスタンスの DOM は変更しないでください。マークアップに空の span 要素を追加するだけで、値をログに記録できます。

<div id="divid">
Select a State : <input id="stateSelect">
<span id="buffer"></span>
</div>

そしてonChangeは次のようになります:

onChange: function(value){
var text1 = document.getElementById("buffer").innerHTML;
document.getElementById("buffer").innerHTML = text1 + [...]
}
于 2013-08-22T12:29:54.680 に答える