javascript - 从另一个页面pureJS获取元素的innertHTML
问题描述
我想从另一个页面获取元素的 innerHTML。我知道用 jQuery(使用 $load)解决这个问题,但我想使用纯 Javascript。示例代码片段;
text = another element innerHTML from another page;
document.getElementsByClassName('show').innerHTML = text;
//pure JS codes will here
<div class="show"></div>
解决方案
与 jQuery 获取页面并将文本插入元素的方式类似load
,您可以使用内置fetch
API 获取外部页面的文本,用于DOMParser
从响应中选择所需的元素,并将其插入 DOM。例如:
fetch(url)
.then(res => res.text())
.then((responseText) => {
const doc = new DOMParser().parseFromString(responseText, 'text/html');
const elm = doc.querySelector('.foo');
container.textContent = elm.textContent;
});
const responseText = '<div class="foo">foo content</div>';
const doc = new DOMParser().parseFromString(responseText, 'text/html');
const elm = doc.querySelector('.foo');
container.textContent = elm.textContent;
<div id="container"></div>
另请注意
document.getElementsByClassName('show').innerHTML = text;
将不起作用,因为getElementsByClassName
返回一个HTMLCollection
,而不是单个元素。相反,querySelector
当您想要选择与选择器字符串匹配的第一个元素时使用。
推荐阅读
- c# - textchanged 事件中的复杂 if 语句
- docker - Docker - 从私有 gitlab 存储库中提取库
- python - 如何在 Python 中优化这个 Mersenne Prime Sieve 的速度?
- python - 如何连接行切片以在python中创建新行
- c# - Datagridview winforms 单元格不会更新,除非将注意力重新集中在网格上
- c# - C# to scale all controls
- vb.net - row filter with dates through datagridview
- javascript - JavaScript 类中的一个属性可以有多个值吗?
- ios - I set up Appium for Real iOS device, Unable to launch WebDriverAgent because xcodebuild failed with code 65
- python - 我如何在tensorflow中使用if语句而不使用else?