2016-06-21 2 views
2

Вот что я пытаюсь сделать:Вызывает кучу HTML в плохой практике JS?

Я делаю несколько вещей, на мой ввод текста с помощью "oninput=myFunction()"

Когда я начинаю набирать Я хотел сделать несколько вещей:

У меня есть функция removing a few elements и adding a textNode already, однако мне нужно добавить 35-40 lines of HTML.

Будет ли это плохо делать?

Я не совсем уверен, как я должен настроить его, чтобы называть этот HTML-код еще функцией.

Какой лучший/самый чистый способ сделать это?

Должен ли я просто хранить HTML, завернутый в hidden display:none class, и добавить ли функцию видимый класс?

Я чувствую, что это не лучший метод, вот почему я здесь прошу!

Любые советы приветствуются. Я печатаю на своем телефоне, так что извините, если я не очень ясно понял.

+0

Я бы предпочел решение, где фрагмент HTML уже находится в DOM. Но с какой альтернативой вы сравниваете? Присвоение строкового литерала JavaScript для свойства 'innerHTML'? Было бы полезно, если бы вы опубликовали две (или более) альтернативы вашего кода. – trincot

ответ

0

Лучший способ, по моему мнению, иметь скрипт, который добавит обработчик событий после того, как элемент будет готов (после загрузки страницы). Эта функция должна заботиться о создании и удалении любого элемента, который является частью сценария «на лету».

Выполнение этого документа гарантирует, что ваш HTML-код будет чистым и что JavaScript будет выполнять то, за что он несет ответственность. Существуют хорошие способы создания HTML с JavaScript с использованием таких методов, как document.createElement и document.createTextNode. Когда ваши элементы будут созданы, вы можете добавить их в правильные позиции.

Чтобы получить лучший рендеринг во всех браузерах, обычно рекомендуется создавать свои элементы display: none, прежде чем все будет готово для отображения.

+0

@Kaiido Вот почему обычно вы используете класс с 'display: none'. Вы можете легко анимировать его, удалив класс с помощью CSS или Javascript. –

+0

@Kaiido Я действительно не уверен, что это значит ... это свойство можно удалить с помощью JavaScript, а затем вы можете делать все, что нужно, с помощью HTML-элемента? Я использую 'display: none' во всех моих анимациях и его работе, как при использовании JavaScript. removeChild также может работать, но некоторые старые браузеры, как известно, имеют проблемы с непривязанными элементами. –

+0

@ Kaiido Я имел в виду переход от невидимого к видимому ... как только видно, вы можете делать все, что хотите, с помощью элемента. –

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