2015-03-09 4 views
1

В настоящее время я делаю это так:Каков предпочтительный метод создания объекта javascript с соответствующими элементами dom?

function createPlayer(id) { 
    var playerWrapper = document.createElement("div"); 
    document.body.appendChild(playerWrapper); 

    var player = document.createElement("div"); 
    playerWrapper.appendChild(player); 

    var Player = { 
    wrapper: playerWrapper, 
    player: player 
    } 

} 

Просто интересно, если это лучший способ, или если есть какой-то способ, которым я могу создать элементы DOM и объект одновременно? Объект также будет иметь приложенные методы. Также будет множество экземпляров объекта и связанных с ним элементов.

+0

Что вопрос? Как упростить свой метод? Это уже довольно просто. Вы можете сократить его, создав функцию createAndAppend, но он займет свое место (4 строки). Я предлагаю вам сосредоточиться на написании кода и прочтении хорошей книги параллельно. – Tommi

+0

Нет, объект обертки вокруг объектов DOM полностью прекрасен. – Bergi

ответ

2

функция AppendChild возвращает прилагаемый узел, так что вы можете создать пустой объект и присвоить возвращаемые узлы непосредственно к объекту следующим образом: http://jsfiddle.net/v7xeLnot/1/

function createPlayer(id) { 
    var Player = {} 
    var playerWrapper = document.createElement('div'); 
    Player.wrapper = document.body.appendChild(playerWrapper); 

    var player = document.createElement('div'); 
    Player.player = playerWrapper.appendChild(player); 

    return Player; 

} 
var myPlayer = createPlayer("someId"); 
+0

Возможно, вы захотите создать 'Player' внутри' createPlayer' и вернуть экземпляр из него. – Tommi

+0

Обновленный код с исправлением – Eyal

1

Самого код, который вы должны написать в объектно-ориентированном Способ, как here

Также вы должны использовать jQuery и это append() метод вместо обычного document.createElement и appendChild. Это обеспечит совместимость с несколькими браузерами и упростит использование других функций.

Если вам нужно создать много HTML, вы могли бы рассмотреть некоторые templateing engine

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