看了一下你的截图,对您所遇到的问题做如下分析。您正确样式下,是通过js+css组合数据后实现的tab分标签展示模式。此样式对代码输出有个要求,就是先加载完数据,再加载css,最后执行js进行样式渲染,其对代码输出顺序敏感。一旦代码输出顺序换乱,就会出现js代码执行完,主对象还未生成等问题,导致undefine异常。而您说您异步获取数据,再加载入对象,此时新载入的数据,只是执行装载操作,并未进行样式渲染,所以显示格局自然是乱的。正确的做法是对新的数据在此执行样式加载操作,且注意此操作对同步异步敏感,一定要设置为异步执行。
希望我的回答对您有所帮助,如有疑问,欢迎继续咨询我们。
9-2020, CSDN.NET, All Rights Reserved而多乐在线书签导入html文件
打开APP
weixin_39597318
关注
而多乐在线书签导入html文件,,简单介绍HTML5中的文件导入 转载
2021-06-01 11:50:00
weixin_39597318
码龄5年
关注
Template,Shadow DOM和Custom Elements让您创建UI组件比以前更容易了。但是像HTML,CSS,JavaScript这样的资源仍然需要一个个地去加载,这是很没效率的。
例如,现在加载jQuery UI或Bootstrap就需要为JavaScript,CSS及Web字体添加单独的标签。如果您的Web组件应用了多重的依赖,那事情就变得更加复杂。
HTML导入让您以一个合并的HTML文件来加载这些资源。使用HTML导入
为加载一个HTML文件,您需要增加一个链接标签,其相关属性为import,herf属性是HTML文件的路径。例如,如果您想把component.html加载到index.html:
index.html
XML / HTML代码将内容复制到文本
<link rel = “ import” href = “ component.html” >
您可以往HTML导入文件(译者注:此处将“导入的HTML”译为“ HTML导入文件”,将“原始HTML”译为“ HTML主文件”。例如,index.html是HTML主文件, component.html是HTML导入文件。)添加任何的资源,包括脚本,样式表和字体,就跟往普通的HTML添加资源一样。
component.html
XML / HTML代码将内容复制到文本
<link rel = “ stylesheet” href = “ css / style.css” >
脚本>
doctype,html,head,body这些标签是不需要的。HTML导入会立即加载要引入的文档,解析文档中的资源,如果有脚本的话也会立即执行它们。执行顺序
浏览器解析HTML文档的方式是线性的,这就是说HTML顶部的脚本会比底部先执行。并且,浏览器通常会等到JavaScript代码执行完毕后,才会接着解析后面的代码。
为了不让脚本压缩HTML的渲染,你可以在标签中添加async或Defer属性(或者你也可以将脚本标签放到页面的底部)。defer属性会重复脚本的执行,直到全部页面解析完成。async属性让浏览器初始化地执行脚本,从而不会阻止HTML的渲染。那么,HTML导入是怎样工作的呢?
HTML导入文件中的脚本就跟着包含defer属性一样。例如在下面的示例中,index.html会先执行script1.js和script2.js,然后再执行script3.js。
index.html
XML / HTML代码将内容复制到文本
<link rel = “ import” href = “ component.html” > // 1。
<title >导入示例 title >
<script src = “ script3.js” >script >// 4。
component.html
XML / HTML代码将内容复制到文本
<script src = “ js / script1.js” >script > // 2。
<script src = “ js / script2.js” >script > // 3。
1.在index.html中加载component.html并等待执行
2.执行component.html中的script1.js
3.执行完script1.js后执行component.html中的script2.js
4.执行完script2.js继而执行index.html中的script3.js
注意,如果给link [rel =“ import”]添加异步属性,HTML导入会把它当做包含异步属性的脚本来对待。它不会等待HTML导入文件的执行和加载,这意味着HTML导入不会阻止HTML主文件的渲染。这也给提升网站性能带来了可能,除非有其他的脚本依赖于HTML引入文件的执行。跨域引入