Если вы установите свойство InnerHtml
узла, DOM должен будет интерпретировать ваш HTML-текст и преобразовать его в узлы. По сути, вы работаете здесь с переводчиком языка. Больше текста, больше времени на обработку. Я подозреваю (но не уверен), что было бы быстрее создать фактические узлы элемента DOM со всеми необходимыми вложениями содержимого и привязать их к содержащему узлу. Ваше решение "InnerHTML" делает то же самое под покровом, но также выполняет дополнительную работу по осмыслению вашего текста.
Я также поддерживаю предложение кого-то еще, кто сказал, что было бы более экономично создавать весь этот контент на сервере, а не на клиенте через JS.
Наконец, я думаю, что вы можете устранить большую часть содержимого ваших span
s. Вам не нужен идентификатор, вам не нужны аргументы в вашем onclick()
. Вызовите функцию JS, которая определит, из какого узла она вызывается, поднимитесь на один узел, чтобы найти содержащий div
и, возможно, зациклите содержащиеся в нем узлы и / или посмотрите на текст, чтобы выяснить, какой элемент в div
это должен отвечать на. Вы можете заставить обработчик onclick выполнять большую часть работы - эта работа выполняется только один раз, во время щелчка мышью, и не будет умножена на 2000x. Это не займет заметного количества времени пользователя.