script标签写在不同位置显示的结果不一样

前言

首先我们来了解一下html的大致文档

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>文档标题</title>
</head>
 
<body>
文档内容......
</body>
 
</html>

head元素———头部标签元素

  • 插入css样式,js样式,还有meta 信息
  • 添加元素标签:<title>, <style>, <meta>, <link>, <script>, <noscript> <base>

body标签—— 页面显示内容

用户可以看见的内容,可以包含文本、图片、音频、视频等各种内容。

body标签(里面放的就是页面上展示出来的内容)
body 元素是定义文档的主体。body 元素包含文档的所有内容(比如文本、超链接、图像、表格和列表等等。)body是用在网页中的一种HTML标签,表示网页的主体部分,也就是用户可以看到的内容,可以包含文本、图片、音频、视频等各种内容!
 

 不同位置不同效果

让我们来看一下

放在body标签内

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 引入的使开发版本 -- 包含完整的注释和警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        <h1>{{msg}}</h1>
        <a href="#">{{count}} </a>
    </div>

    <script>
        // 一但引入vueJs的核心包,在全局环境,就有了vue构造函数
        const app = new Vue({
            //通过了el配置选择器,指定vue管理的使那个盒子
                el:'#app',
            //通过data 提供数据
            data:{
                msg:'加油 你是最酷的',
                count:666
            }
        })
    </script>

</body>
</html>

---------------------------------------------------------浏览器展示效果-------------------------------------------------

 

放在head标签内

在HTML文件中,将JavaScript代码放在head标签内会导致浏览器在解析HTML时会先执行JavaScript代码,而此时页面的其他内容还未加载完毕。

所以页面先加载js代码,但是并没有获取到body内的元素,所以无法获取到数据。


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 引入的使开发版本 -- 包含完整的注释和警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
    
    <script>
        // 一但引入vueJs的核心包,在全局环境,就有了vue构造函数
        const app = new Vue({
            //通过了el配置选择器,指定vue管理的使那个盒子
                el:'#app',
            //通过data 提供数据
            data:{
                msg:'加油 你是最酷的',
                count:666
            }
        })
    </script>
</head>
<body>
    <div id="app">
        <h1>{{msg}}</h1>
        <a href="#">{{count}} </a>
    </div>


</body>
</html>

---------------------------------------------------------浏览器展示效果-------------------------------------------------

 

 放在body标签后

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

</head>
<body>
    <div id="app">
        <h1>{{msg}}</h1>
        <a href="#">{{count}} </a>
    </div>


</body>
    <!-- 引入的使开发版本 -- 包含完整的注释和警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
    
    <script>
        // 一但引入vueJs的核心包,在全局环境,就有了vue构造函数
        const app = new Vue({
            //通过了el配置选择器,指定vue管理的使那个盒子
                el:'#app',
            //通过data 提供数据
            data:{
                msg:'加油 你是最酷的',
                count:666
            }
        })
    </script>
</html>

---------------------------------------------------------浏览器展示效果------------------------------------------------- 

 解决

很显然,放在body标签内和放在body标签后,浏览器展示效果都是一样的,但是放在head标签内,浏览器展示效果不一样,没有将js里面的数据传送过来。那么如何获取到js里面的数据呢?有这几种状况:

第一种:将js代码放在body标签底部

第二种:使用DOMContentLoaded事件来确保js代码在页面加载完成后在执行

第三种:异步加载或延迟加载。

        异步加载:通过async属性来实现

        延迟加载:通过defer属性来实现

在一个页面上展示两个一样的可视化图表通常需要利用前端技术,比如HTML、CSS和JavaScript库(如D3.js、ECharts、Highcharts等)。以下是简单的步骤: 1. **引入库**:首先,你需要在你的项目中引入适合的图表库,例如如果你选择的是ECharts,可以添加`<script>`标签从CDN引入。 ```html <script src="https://cdn.jsdelivr.net/npm/echarts@5.3.0/dist/echarts.min.js"></script> ``` 2. **创建容器**:在HTML中为每个图表创建独立的div元素,并给它们分配独特的ID,以便于你在JavaScript中引用它们。 ```html <div id="chart1" style="width: 600px;height:400px;"></div> <div id="chart2" style="width: 600px;height:400px;"></div> ``` 3. **初始化图表**:在JavaScript里,分别为每个图表实例化一个ECharts对象,并设置各自的数据和配置选项。 ```javascript // 对应第一个图表 var chart1 = echarts.init(document.getElementById('chart1')); // 对应第二个图表 var chart2 = echarts.init(document.getElementById('chart2')); // 分别设置两个图表的数据和配置... ``` 4. **数据和配置**:根据你的需求,准备两个图表所需的数据显示格式,如柱状图可能需要x轴数据和y轴数据,折线图可能需要一系列的时间序列点。然后,对每个图表设置不同的配置,比如图表类型、标题、颜色等。 5. **渲染图表**:最后,调用`setOption()`方法将数据和配置传给图表进行渲染。 ```javascript chart1.setOption({ // 第一个图表的具体配置 }); chart2.setOption({ // 第二个图表的具体配置 }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值