JavaScript 笔记 - <script> 标签的位置

本文探讨了JavaScript文件的不同加载位置对网页加载速度的影响。介绍了传统做法中将所有&lt;script&gt;标签置于&lt;head&gt;部分可能导致的延迟问题,并推荐了现代做法——将&lt;script&gt;标签置于&lt;body&gt;标签末尾以优化用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaScript 笔记 - < script> 标签的位置


按照传统的做法,所有< script>元素都应该放在页面的元素中,例如:

<!DOCTYPE html>
<html>
<head>
<title>Example HTML Page</title>
<script type="text/javascript" src="example1.js"></script>
<script type="text/javascript" src="example2.js"></script>
</head>
<body>
<!-- 这里放内容 -->
</body>
</html>

这种做法的目的就是把所有外部文件(包括 CSS 文件和 JavaScript 文件)的引用都放在相同的地方。可是,在文档的元素中包含所有 JavaScript 文件,意味着必须等到全部 JavaScript 代码都被下载、解析和执行完成以后,才能开始呈现页面的内容(浏览器在遇到标签时才开始呈现内容)。对于那些需要很多 JavaScript 代码的页面来说,这无疑会导致浏览器在呈现页面时出现明显的延迟,而延迟期间的浏览器窗口中将是一片空白。为了避免这个问题,现代 Web 应用程序一般都把全部 JavaScript 引用放在元素中页面内容的后面,如下例所示:

<!DOCTYPE html>
<html>
<head>
<title>Example HTML Page</title>
</head>
<body>
<!-- 这里放内容 -->
<script type="text/javascript" src="example1.js"></script>
<script type="text/javascript" src="example2.js"></script>
</body>
</html>

这样,在解析包含的 JavaScript 代码之前,页面的内容将完全呈现在浏览器中。而用户也会因为浏览器窗口显示空白页面的时间缩短而感到打开页面的速度加快了。

我不需要商品信息在js中产生,我只要在html中产生即可,比如我原来那样: 2B铅笔(12支笔) 优质木质拖拽,书写顺畅,不粘附 ¥15.00 - 2 + ¥30 删除 <tr id="product2"> <td> <img src="img/pic2.jpg"/> </div> </td> <td> <div class="ms-name">A5笔记本</div> <div class="ms1">优质纸张,方格设计,适合日常记录<div> </td> <td > <span class="original-price">¥12</span> </td> <td > <button class="btn1" onclick="updateQuantity(1, -1)">-</button> <input type="text" class="quantity-input" id="qty2" value="2" readonly> <button class="btn1" onclick="updateQuantity(1, 1)">+</button> </td> <td > <div class="jg" id="jg2">¥24</div> </td> <td > <button class="sc" onclick="removeProduct(2)"> 删除 </button> </td> </tr> <tr id="product3"> <td> <img src="img/pic3.jpg"/> </div> </td> <td> <div class="ms-name">彩色荧光笔(5色)</div> <div class="ms1">多彩荧光标记笔,不易洇染</div> </td> <td > <span class="original-price">¥18.00</span> </td> <td > <button class="btn1" onclick="updateQuantity(1, -1)">-</button> <input type="text" class="quantity-input" id="qty3" value="2" readonly> <button class="btn1" onclick="updateQuantity(1, 1)">+</button> </td> <td > <div class="jg" id="jg3">¥36</div> </td> <td > <button class="sc" onclick="removeProduct(3)"> 删除 </button> </td> </tr> <tr id="product4"> <td> <img src="img/pic4.jpg"/> </div> </td> <td> <div class="ms-name">橡皮擦(3块装)</div> <div class="ms1">高效擦除,不留痕迹,不易碎</div> </td> <td > <span class="original-price">¥6.00</span> </td> <td > <button class="btn1" onclick="updateQuantity(1, -1)">-</button> <input type="text" class="quantity-input" id="qty4" value="2" readonly> <button class="btn1" onclick="updateQuantity(1, 1)">+</button> </td> <td > <div class="jg" id="jg4">¥12</div> </td> <td > <button class="sc" onclick="removeProduct(4)"> 删除 </button> </td> </tr> <tr id="product5"> <td> <img src="img/pic5.jpg"/> </div> </td> <td> <div class="ms-name">直尺30cm</div> <div class="ms1">透明刻度清晰,耐用防折断</div> </td> <td > <span class="original-price">¥5</span> </td> <td > <button class="btn1" onclick="updateQuantity(1, -1)">-</button> <input type="text" class="quantity-input" id="qty5" value="2" readonly> <button class="btn1" onclick="updateQuantity(1, 1)">+</button> </td> <td > <div class="jg" id="jg5">¥10</div> </td> <td > <button class="sc" onclick="removeProduct(5)"> 删除 </button> </td> </tr> <tr id="product6"> <td> <img src="img/pic6.jpg"/> </div> </td> <td> <div class="ms-name">圆规</div> <div class="ms1">精密绘图工具,金属材质耐用</div> </td> <td > <span class="original-price">¥8</span> </td> <td > <button class="btn1" onclick="updateQuantity(1, -1)">-</button> <input type="text" class="quantity-input" id="qty6" value="2" readonly> <button class="btn1" onclick="updateQuantity(1, 1)">+</button> </td> <td > <div class="jg" id="jg6">¥16</div> </td> <td > <button class="sc" onclick="removeProduct(6)"> 删除 </button> </td> </tr> <tr id="product7"> <td> <img src="img/pic7.jpg"/> </div> </td> <td> <div class="ms-name">钢笔</div> <div class="ms1">经典款式,流畅书写,赠送墨囊</div> </td> <td > <span class="original-price">¥20.00</span> </td> <td > <button class="btn1" onclick="updateQuantity(1, -1)">-</button> <input type="text" class="quantity-input" id="qty7" value="2" readonly> <button class="btn1" onclick="updateQuantity(1, 1)">+</button> </td> <td > <div class="jg" id="jg7">¥30</div> </td> <td > <button class="sc" onclick="removeProduct(7)"> 删除 </button> </td> </tr> <tr id="product8"> <td> <img src="img/pic8.jpg"/> </div> </td> <td> <div class="ms-name">文件夹</div> <div class="ms1">A4尺寸,可装30页纸,多色可选</div> </td> <td > <span class="original-price">¥16.00</span> </td> <td > <button class="btn1" onclick="updateQuantity(1, -1)">-</button> <input type="text" class="quantity-input" id="qty8" value="2" readonly> <button class="btn1" onclick="updateQuantity(1, 1)">+</button> </td> <td > <div class="jg" id="jg8">¥32</div> </td> <td > <button class="sc" onclick="removeProduct(8)"> 删除 </button> </td> </tr> <tr id="product9"> <td> <img src="img/pic9.jpg"/> </div> </td> <td> <div class="ms-name">修正带</div> <div class="ms1">5mm宽度,8m长,修正精确无残留</div> </td> <td > <span class="original-price">¥10.00</span> </td> <td > <button class="btn1" onclick="updateQuantity(1, -1)">-</button> <input type="text" class="quantity-input" id="qty9" value="2" readonly> <button class="btn1" onclick="updateQuantity(1, 1)">+</button> </td> <td > <div class="jg" id="jg9">¥20</div> </td> <td > <button class="sc" onclick="removeProduct(9)"> 删除 </button> </td> </tr> <tr id="product10"> <td> <img src="img/pic10.jpg"/> </div> </td> <td> <div class="ms-name">便利贴套装</div> <div class="ms1">多色组合,3种尺寸,便于标记归类</div> </td> <td > <span class="original-price">¥14.00</span> </td> <td > <button class="btn1" onclick="updateQuantity(1, -1)">-</button> <input type="text" class="quantity-input" id="qty10" value="2" readonly> <button class="btn1" onclick="updateQuantity(1, 1)">+</button> </td> <td > <div class="jg" id="jg10">¥28</div> </td> <td > <button class="sc" onclick="removeProduct(10)"> 删除 </button> </td> </tr> </tbody> 另外请把新添加代码改成js入门级别的,不要太难
06-19
任务描述 本关任务:使用 document.write 在页面显示 <h1>网页制作常用工具</h1><ul><li>图像处理Photoshop工具</li><li>网页编辑Dreamweaver工具</li></ul> 相关知识 document.write 基本功能介绍 document.write 是一个基本的 JavaScript 命令。这个命令简单地打印指定的文本内容到页面上。为了逐字打印文本,在打印的文本字符串加上单引号。例如: document.write('Hello World!'); 同时,也可以使用 document.write 打印变量。输入变量名称不加上引号,如下: var mytext = "Hello again"; document.write(mytext); 注意:如果变量名称加上引号,将会打印出变量名称(不会打印变量值)。你可以使用“+”符号来连接变量值和文本字符串。 var colour1 = "purple"; var colour2 = "pink"; document.write('<p>colour1: ' + colour1 + '<br>colour2: ' + colour2 + '</p>'); 打印结果如下: colour1: purple colour2: pink 编程要求 使用 document.write 在页面显示 <h1>网页制作常用工具</h1><ul><li>图像处理Photoshop工具</li><li>网页编辑Dreamweaver工具</li></ul> 测试说明 平台会对你的代码进行运行测试,如果实际输出结果与预期结果相同,则通关;反之,则 GameOver。<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>prompt方法</title> <script type="text/javascript"> /***请在此处书写代码****/ /**********Begin**********/ /**********End**********/ </script> </head> <body> </body> </html>
05-28
我的详情界面里只显示了搜索两个字,问卷标题等搜索框都没有出现,是不是我这个页面没有导入element组件,界面代码如下:<template> <!-- 顶部搜索区域 --> <div class="filter-container"> <el-form :inline="true" :model="searchForm"> <!-- 问卷标题搜索 --> <el-form-item label="问卷标题"> <el-input v-model="searchForm.dcWjTitle" placeholder="输入问卷标题" clearable /> </el-form-item> <!-- 被测评人ID搜索 --> <el-form-item label="被测评人ID"> <el-input v-model="searchForm.dcid" placeholder="输入被测评人ID" clearable /> </el-form-item> <!-- 部门选择 --> <el-form-item label="人员部门"> <el-select v-model="searchForm.dcDept" placeholder="选择部门" clearable > <el-option v-for="dept in departments" :key="dept.value" :label="dept.label" :value="dept.value" /> </el-select> </el-form-item> <!-- 状态选择 --> <el-form-item label="提交状态"> <el-select v-model="searchForm.state" placeholder="选择状态" clearable > <el-option label="已提交" value="1" /> <el-option label="未提交" value="0" /> </el-select> </el-form-item> <el-form-item> <el-button type="primary" @click="handleSearch" icon="el-icon-search" >搜索</el-button> </el-form-item> </el-form> </div> <!-- 数据表格 --> <el-table :data="filteredData"> <!-- 表格列定义 --> </el-table> </template> <script> export default { data() { return { searchForm: { dcWjTitle: '', dcid: '', dcDept: '', state: '' }, rawData: [], // 原始数据 departments: [ // 部门选项 { label: '技术部', value: 'tech' }, { label: '市场部', value: 'market' } ] } }, computed: { // 过滤后的数据 filteredData() { return this.rawData.filter(item => (!this.searchForm.dcWjTitle || item.title.includes(this.searchForm.dcWjTitle)) && (!this.searchForm.dcid || item.dcid === this.searchForm.dcid) && (!this.searchForm.dcDept || item.dept === this.searchForm.dcDept) && (!this.searchForm.state || item.state === this.searchForm.state) ) } }, methods: { // 触发搜索 handleSearch() { this.fetchFilteredData() }, // 从后端获取数据 async fetchFilteredData() { try { const params = { title: this.searchForm.dcWjTitle, dcid: this.searchForm.dcid, dept: this.searchForm.dcDept, state: this.searchForm.state } // 调用后端API(示例) const { data } = await axios.get('/api/questionnaires', { params }) this.rawData = data } catch (error) { console.error('获取数据失败', error) } } } } </script>
最新发布
07-15