我有一个HTML字符串,代表一个元素:'<li>text</li>'.我想将其附加到DOM中的一个元素(在我的例子中是ul).如何使用Prototype或DOM方法来实现这一点?

(我知道我可以在jQuery中轻松做到这一点,但不幸的是,我们没有使用jQuery.)

推荐答案

Note:大多数当前浏览器支持HTML<template>元素,这为从字符串创建元素提供了更可靠的方法.见Mark Amery's answer below for details.

For older browsers, and node/jsdom:(在 compose 本文时还不支持<template>个元素),请使用以下方法.这与库从HTML字符串中获取DOM元素所做的事情是一样的(with some extra work for IE通过其innerHTML的实现来解决bug):

function createElementFromHTML(htmlString) {
  var div = document.createElement('div');
  div.innerHTML = htmlString.trim();

  // Change this to div.childNodes to support multiple top-level nodes.
  return div.firstChild;
}

请注意,与HTML模板不同,此won't适用于某些在法律上不能成为<div>的子级的元素,例如<td>.

如果您已经在使用库,我建议您坚持使用库认可的方法,从HTML字符串创建元素:

Javascript相关问答推荐

nPM审计始终发现0个漏洞

如何编辑代码FlipDown.js倒计时?

使用redux-toolet DelivercThunks刷新访问令牌

警告!合同执行期间遇到错误[执行已恢复](Base Layer 2)

提交表格后保留Web表格中的收件箱值?

格式值未保存在redux持久切片中

Next.js(react)使用moment或不使用日期和时间格式

如何将Map字符串,布尔值转换为{key:string;value:bo布尔值;}[]?<>

如何使onPaste事件与可拖动的HTML元素一起工作?

第三方包不需要NODE_MODULES文件夹就可以工作吗?

如何在Bootstrap中减少网格系统中单个div的宽度

将数组扩展到对象中

从另一个数组中的对应行/键值对更新数组中的键值对对象

如何在我的Next.js项目中.blob()我的图像文件?

是否可以将Select()和Sample()与Mongoose结合使用?

匹配一个或多个可选重复的特定模式

背景动画让网站摇摇欲坠

有没有办法更改Chart.js 3.x.x中主要刻度的字体?

如何在Firebase中读取对象的特定字段?

脚本语法错误只是一个字符串,而不是一个对象?