当前位置: 首页 > news >正文

<template>标签的用法

一、html5中的template标签

template标签,顾名思义,模板的意思
HTML5提供的新标签,更加规范和语义化
可以把列表项放入template标签中,然后进行批量渲染

html中的template标签中的内容在页面中不会显示。但是在后台查看页面DOM结构存在template标签。这是因为template标签天生不可见,它设置了display:none;属性。

二、template标签操作的属性和方法

content属性:在js中template标签对应的dom对象存在content属性,对应的属性值是一个dom节点,结构是这样的,可以看到中间有一层#document-fragment。通过该属性可以获取template标签中的内容,template对象.content可以调用getElementById、querySelector、querySelectorAll方法来获取里面的子节点,直接输出对应的Dom对象如图所示:
在这里插入图片描述
所以要操作template里面的dom,不能直接用template,要用template.content,如下:

<template id="tem">
    <div id="div1">我是template</div>
</template>
<script>
    let o = document.getElementById("tem");
    console.log(o.content.nodeName);//#document-fragment
	var div1 = template.content.querySelectorByTagName('div')[0];
</script>

最后举个例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <template>
        <div>
            <ul>
                <li>模板1</li>
                <li>模板2</li>
                <li>模板3</li>
            </ul>
        </div>
    </template>

    <button onclick="display()">点击我显示</button>


    <script>
        function display(){
            var temp = document.getElementsByTagName("template")[0];
            //通过cloneNode方法把获取到的节点再复制一份
            var clo = temp.content.cloneNode(true);
            document.body.appendChild(clo);
        }
    </script>
</body>
</html>

相关文章:

  • JS获取JSON字符串的几种方式
  • JS关于定义函数的区别(为啥推荐第二种方式)
  • 关于对JS立即执行函数(function(){...})()的深度理解
  • 10分钟Canvas从入门到实践
  • e.target与e.currentTarget的区别
  • 解决:微信小程序饼状图组件层级过高覆盖在日历选择器上
  • JS中数组splice方法使用需要注意的点
  • JS中for,for...in,for...of和forEach的用法和区别
  • JSON.parse和JSON.stringify的用法
  • 一文搞懂JS中变量作用域的那些事
  • JS给函数添加属性
  • 开发中常见的一些Bug
  • 一分钟搞懂JS函数提升与变量提升的优先级
  • ES5中原型、实例对象和构造函数的那些事
  • 我的创作纪念日
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • Android单元测试 - 几个重要问题
  • C++类的相互关联
  • CEF与代理
  • JS字符串转数字方法总结
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • SQLServer之创建显式事务
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 理解在java “”i=i++;”所发生的事情
  • 问题之ssh中Host key verification failed的解决
  • 栈实现走出迷宫(C++)
  • const的用法,特别是用在函数前面与后面的区别
  • ​Java并发新构件之Exchanger
  • ​批处理文件中的errorlevel用法
  • # 飞书APP集成平台-数字化落地
  • $.ajax()
  • $.each()与$(selector).each()
  • $L^p$ 调和函数恒为零
  • (LeetCode C++)盛最多水的容器
  • (第二周)效能测试
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (一)Dubbo快速入门、介绍、使用
  • (转)socket Aio demo
  • (转载)OpenStack Hacker养成指南
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .Net 6.0 处理跨域的方式
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .net2005怎么读string形的xml,不是xml文件。
  • .Net8 Blazor 尝鲜
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • /var/lib/dpkg/lock 锁定问题
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [Android View] 可绘制形状 (Shape Xml)
  • [Android]Tool-Systrace