0

使用方法 domconstruct = http://dojotoolkit.org/reference-guide/1.9/dojo/dom-construct.html#dojo-dom-construct-place

place() の第二引数は

refNode String|DomNode ノードを配置する DOM ノード。文字列の場合、ノードの ID と見なされます

DOMノードが使えると書いてあるので、jqueryでdomnodeを取得してみました→エラー Dojoのquery()でもやってみました→同じエラー

エラー:

    Uncaught TypeError: Object [object Object] has no method 'appendChild' 

私のコード domConstruct.place(errorBoxHtml, $("#"+currentView.id+" .content") , "first");

4

3 に答える 3

1

dojo/queryjQuery のセレクターは適切な DOM ノードを返していませんが、ノードのリストを返しています。

この JSFiddleで jQuery を使用した例を見ることができます。コンソールで確認できるように、これは"No it isn't"、作成したセレクターの DOM ノードを返していないことを意味します。実際に返されるもの (DOM ノードの配列) をコンソールで確認することもできます。

また、このJSFiddleで Dojo を使用して同じ例を作成しました。ご覧のとおりdojo/query、DOM ノードを返すのではなく、DOM ノードのリストを返します。ただし、dojo/domモジュールとメソッドbyId()を使用すると、結果として DOM ノードが得られます。

これは、コードが機能しない理由を説明しています。クエリを使用している場合は、dojo/NodeList-domすべてのノードを個別に取得し、各ノードで関数を呼び出すために使用できます。または、DOM ノードが 1 つしかないことが確実な場合は、次を使用することもできます。

require(["dojo/query", "dojo/domReady!"], function(query) {
    var myNode = query("...")[0];
});

しかし、使用しているモジュールに問題があると思います。クエリはゼロから多数の結果を取得するために使用され、そのように使用する必要があります。特定の DOM ノードを取得したい場合は、ID を使用してそれを識別しdojo/dom、その目的のために作成されたモジュールを使用する必要があります。

于 2013-08-11T22:03:38.593 に答える