上一篇
html中js
- 行业动态
- 2025-05-04
- 3
JavaScript(JS)用于为HTML页面添加动态效果和交互功能,通过标签嵌入或引入外部文件,可操作DOM元素、处理事件,实现表单验证、动画等
HTML中JavaScript的使用与详解
JavaScript的引入方式
内部脚本(直接在HTML中编写)
通过<script>
标签直接在HTML文件中编写JS代码,通常放在</body>
前,避免阻塞页面渲染。<script> console.log("页面加载完成"); </script>
外部脚本(引用独立JS文件)
将JS代码写入独立文件(如script.js
),通过<script src="script.js"></script>
引入。
优点:分离代码,便于维护和复用。
注意:<script>
标签默认会阻塞页面渲染,可添加defer
或async
属性优化。属性 作用 defer
延迟执行,等待HTML解析完成后按顺序执行(推荐)。 async
异步执行,立即下载并尽快执行,不保证执行顺序。
DOM操作核心方法
选择元素
document.getElementById(id)
:通过ID获取单个元素。document.querySelector(selector)
:通过CSS选择器获取第一个匹配元素。document.getElementsByClassName(className)
:通过类名获取元素集合(HTMLCollection)。document.querySelectorAll(selector)
:通过CSS选择器获取所有匹配元素(NodeList)。
修改元素内容与属性
- :
element.textContent
或element.innerText
。 - HTML内容:
element.innerHTML
。 - 属性操作:
element.setAttribute(name, value)
/element.getAttribute(name)
。
- :
创建与插入元素
const newElem = document.createElement("div"); // 创建新元素 newElem.textContent = "新增内容"; // 设置内容 document.body.appendChild(newElem); // 插入到页面
事件处理
事件监听
- 传统方式:
element.onclick = function() {...}
,只能绑定一个事件。 - 现代方式:
element.addEventListener("click", function(e) {...})
,支持多个事件绑定。
参数说明:event
:事件对象,包含target
(触发元素)、type
(事件类型)等属性。options
:如{ once: true }
(只执行一次)、{ capture: true }
(捕获阶段触发)。
- 传统方式:
事件冒泡与捕获
- 冒泡:事件从子元素向上传递到父元素。
- 捕获:事件从父元素向下传递到子元素。
示例:// 阻止冒泡 element.addEventListener("click", function(e) { e.stopPropagation(); });
表单验证与动态交互
表单验证
通过submit
事件拦截默认提交行为,进行自定义验证。const form = document.querySelector("form"); form.addEventListener("submit", function(e) { if (form.username.value === "") { alert("用户名不能为空!"); e.preventDefault(); // 阻止提交 } });
更新
- 定时器:
setInterval
(周期性执行)/setTimeout
(延迟执行)。 - 动画效果:通过修改CSS属性(如
element.style.left
)实现。
示例:let pos = 0; const box = document.querySelector("#box"); setInterval(() => { pos += 5; box.style.transform = `translateX(${pos}px)`; }, 100);
- 定时器:
常见问题与解决方案
问题 | 解决方案 |
---|---|
脚本执行顺序错误 | 将<script> 标签放在</body> 前,或使用defer 属性。 |
事件绑定冲突 | 优先使用addEventListener ,避免覆盖原有事件。 |
跨域请求失败 | 使用CORS 或后端设置允许跨域(如Access-Control-Allow-Origin )。 |
相关问题与解答
问题1:如何确保JS代码在DOM完全加载后执行?
- 解答:
- 将
<script>
标签放在</body>
前。 - 使用
DOMContentLoaded
事件监听:document.addEventListener("DOMContentLoaded", function() { // 操作DOM的代码 });
- 将
问题2:如何阻止事件冒泡?
- 解答:
在事件处理函数中调用event.stopPropagation()
方法,element.addEventListener("click", function(e) { e.stopPropagation(); // 阻止事件向上冒泡 });