2012-01-14 3 views
2

だから私は、次のコードを持っています(私はconsole.log(structures.loginStructure)を行う場合)JavaScriptのオブジェクトキー値から配列を返すにはどうすればよいですか?

var structures = { 

    loginStructure : function(){ 

     return structure = [ 
      '<form name="',opts.formClass,'" class="',opts.formClass,'" method="post" action="#">', 
       '<fieldset class="',opts.fieldsWrapper,'">', 
        '<fieldset class="',opts.userWrapper,'">', 
         '<label for="',opts.userInt,'" class="',opts.userLbl,'"><img src="',opts.userIcon,'" alt="',opts.userName,'" /></label>', 
         '<input type="text" name="',opts.userInt,'" class="',opts.userInt,'" placeholder="',checkNameLenght(opts.userName,namesLenght.userNameLenght,16,'Username'),'" value="" autocomplete="off" />', 
        '</fieldset>', 
        '<fieldset class="',opts.passWrapper,'">', 
         '<label for="',opts.passInt,'" class="',opts.passLbl,'"><img src="',opts.passIcon,'" alt="',opts.passName,'" /></label>', 
         '<input type="password" name="',opts.passInt,'" class="',opts.passInt,'" placeholder="',checkNameLenght(opts.passName,namesLenght.passNameLenght,16,'Password'),'" value="" autocomplete="off" />', 
        '</fieldset>', 
        '<fieldset class="',opts.btnWrapper,'">', 
         '<button type="submit" name="',opts.btnInt,'" class="',opts.btnInt,'">',checkNameLenght(opts.btnName,namesLenght.btnNameLenght,7,'Login'),'</button>', 
        '</fieldset>', 
       '</fieldset>', 
       '<div class="toogle-button">', 
        '<ul class="inside">', 
         '<li class="toogle"><a><img src="assets/gfx/toogle.png" alt="Back" /></a></li>', 
        '</ul>', 
       '</div>', 
      '</form>', 
      '<div class="toogle-buttons">', 
      '</div>' 
     ]; 
    } 

} 

これはちょうどfunction()返します。私がそこに持っている実際の配列を返す方法はありますか?

オブジェクトのキーとして定義されている複数の配列を持つことが目的です。そのようなものを返すことができるのであれば、より簡単に見えるからです。それとももっと良い方法がありますか?

+0

ところで、これはjQueryとは関係ありませんが、おそらくjQueryを使用していることを示すようにタグ付けされています。これは他の人にjQuery依存の回答を提供するヒントとして機能します。 – ziesemer

+0

はい、私はjQueryも使用しています。実際、このコードはjQueryプラグインの一部です。 – Roland

+0

すべての変数が正しく定義されていればここでうまく動作するようです:http://jsfiddle.net/jfriend00/ekZVE/。 – jfriend00

答えて

4

あなたが欲しい:

structures.loginStructure(); 

structures.loginStructureは、単純に関数への参照を返すのではなく、機能を実行し、その結果を返しています。 ()を最後に追加して実行し、その結果を返します。

これに代わる方法として、それを関数として記述しないでください。 loginStructure: ['<form name...と宣言してください。基本的にはfunction(){return structure =を削除してください。ここで重要な違いは、optsの値は、後で関数が実行されるまで延期されるのではなく、直ちに評価されるということです。したがって、コードを盲目的に更新しないでください。

+0

' '、opts.formClass、 '' '+ opts.formClass +''の代わりに? – Roland

+0

私はしようとしましたが、私のコードにエラーが表示されます。返すthis.each(function(){....... '、なぜ? – Roland

+0

@Roland - 私は必要と思います – ziesemer

関連する問題