2011-02-07 12 views
2

文書にある既存のulノードの子である新しいノードを作成しようとしていますが、どのように進行してもエラーが発生するようです。以下の二つの方法は、私が試してみました方法があります。新しいdomノードの作成に関するdojoの問題

var ul = dojo.query('#highlights ul').0; 
dojo.place("<li></li>", ul); 

と私はメッセージを取得:

TypeError: refNode.appendChild is not a function

ULの値をチェックするには、私がいることを見つけるため、このメッセージは、私には意味がありませんでしたがそれは要素であり、すでに2つの子を持っています...私はdojo.create()によって許可されたよりプログラム的なビルドを試しました。

var ul = dojo.query('#highlights ul').0; 
dojo.create("li", null, ul); 

と、これはエラー生成:次のラインを介してUL要素が定義されているので、本当に私を不可解さ

TypeError: doc is undefined

を...私はちょうど同じ李を追加してみなければならないことを決めましたドキュメント本体への要素は、ので、私は行ってみました:

エラーなしで返されますが、変更文書のソースは何もチェックしないで
dojo.create("li", null, dojo.body()); 

....だから私は行方不明です何かがあるのでしょうか?私は、これらのファイルを使用するためにファイルを必要とする必要はないと仮定します。間違った前提ですか?このコードを含むロード関数は、コードを整理するのに役立つ外部ファイルにありますが、これが原因の可能性がありますか?

この関数はdoync.addOnLoadブロックで呼び出され、asyncと呼ばれるときの問題を防ぐことができます。これは問題の一部になる可能性がありますか?

答えて

3

問題は、あなたのクエリからノードを取得していないということです。

それは次のようになります。

var ul = dojo.query('#highlights ul')[0]; 

ない

var ul = dojo.query('#highlights ul').0; 

私は、あなたのブラウザがdojo.query行にエラーではありませんでした驚いています。

+0

ok私はそれを打つつもりです、私はそれを考えました。と[]はほぼ同等でしたが? – xenador

+0

(申し訳ありませんが、入力して、コメントをつぶす!) 状況によって異なります。 値が 'baz'のプロパティバーを持つjavascriptにオブジェクトfooがある場合、foo.barまたはfoo ['bar']としてアクセスできます。彼らはどちらも同じです。 しかし、dojo.queryは配列を返すので、その配列の0番目の要素にアクセスしています。ドット記法を使ってこれを行うことはできません。 – mrtom

+0

その仕事のxenadorか? – mrtom

-2

恐らくxenadorはdomの操作をdojo.readyで囲むのを忘れていました。 doc is underfined ==ドキュメントが準備できていません。

関連する問題