Как известно, W3C рекомендует не использовать innerHTML, а вместо него DOM-методы.
Хорошо, теги с текстом генерить мы можем, а вот как в тег вставить, например, HTML-код символа? createTextNode() вставляет их "как есть", data/setData - то же самое...