2012-01-14 2 views
2

Поэтому у меня есть следующий фрагмент кода:Как вернуть массив из значения ключа объекта в 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>' 
     ]; 
    } 

} 

Это возвращает (если я console.log(structures.loginStructure)) только 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

Я попытался, но потом он дает мне ошибку на моем коде, на какой строке у меня есть 'return this.each (function() {.......', почему? – Roland

+0

@Roland - мне кажется, нам нужно чтобы увидеть больше кода, чтобы точно ответить на этот вопрос, который, я думаю, может быть уместным для нового вопроса. – ziesemer

Смежные вопросы