javascript - 一次替换 DOM 中的一组元素
问题描述
假设我有一个由这个 html 表示的 DOM 树。
<div id="root">
<div>
<p>hoge</p>
<span>fuga</span>
</div>
<div>
<span>piyo</span>
<div>
<span>foobar</span>
</div>
</div>
</div>
如果我想用 s 替换所有的<span>
s <button>
,我该如何实现呢?
const replaceElements = () => {
const page = document.getElementById("root")
const elements = document.getElementsByTagName('span');
elements.forEach(item => ???)
}
解决方案
它不断获取第一个span
并将其转换为按钮,直到不再有span
s,方法是将元素替换为 span 的 innerHTML 周围的按钮标签。查看片段。(在 Chrome 76 中测试)
const replaceElements = () => {
const elements = document.getElementsByTagName('span');
while (elements.length > 0) {
const item = elements[0];
item.outerHTML = '<button>' + item.innerHTML + '</button>';
}
}
const replaceElements = () => {
const elements = document.getElementsByTagName('span');
while (elements.length > 0) {
const item = elements[0];
item.outerHTML = '<button>' + item.innerHTML + '</button>';
}
}
replaceElements();
<div id="root">
<div>
<p>hoge</p>
<span>fuga</span>
</div>
<div>
<span>piyo</span>
<div>
<span>foobar</span>
</div>
</div>
</div>
推荐阅读
- spring-boot - 获取端点的授权令牌
- wordpress - 通过 2 个单独的 Wordpress 安装,如何实现一个新成员在一个站点上注册并自动插入另一个站点?
- angular - 如何在 Angular 组件中有一个变量 h1..h6 元素?
- javascript - 将立方体的一个侧面粘贴到另一侧时遇到问题
- ios - 使用 TabViewController,保存数据时,TableView 不更新
- python - OpenCV中的图像阈值
- reactjs - 授权 Laravel 中的 ERR_EMPTY_RESPONSE 错误
- uwp - UWP PrintPageRangeOptions.AllowCustomSetOfPages 属性不起作用
- python - ImportError:无法从“teacher.models”导入名称“GuideTeacher”
- javascript - 在 Promise 中的 Angular 8 HttpClient 请求中失败,并且承诺永远不会解决