Se podría decir que también tenemos document.write para algunos casos de uso.
innerHTML se estandarizó en HTML5 y, con él, un método hermano insertAdjacentHTML que funciona como innerHTML, pero nos permite definir de forma más específica dónde queremos insertar el contenido HTML: beforeBegin, afterBegin, beforeEnd y afterEnd.
varul=document.getElementById("list");ul.insertAdjacentHTML("beforeEnd","<li>A new li on the list.</li>");
Hasta ahora, el principal problema con insertAdjacentHTML era su falta de compatibilidad con los navegadores. Dado que Firefox implementa insertAdjacentHTML a partir de la versión 8, estará disponible en todos los navegadores principales, incluidos los navegadores para dispositivos móviles. Si quieres usarlo ahora y asegurarte de que funcione en versiones de Firefox anteriores a la 8, puedes usar este polyfill.
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2011-08-27 (UTC)"],[],[]]