如何在HTML使用JavaScript
<script>元素用于在HTML中引用或嵌套JavaScript脚本代码,该元素默认被定义在<head>元素中。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--<script> </script>元素
作用 - 引入脚本语言
属性
src - 指定js文件路径
type=''text/javascript -(新)表示当前使用的是js语言
language=''javascript - (旧) 表示当前使用的是js语言
-->
<script src="js.js" type="text/javascript" language="JavaScript">
//浏览器加载完毕在执行指定代码
window.onload = function () {
//js编码写在这里
}
</script>
</head>
<body>
<button id="btn">按钮</button>
<!--考虑到代码执行的顺序,js代码写到HTML后面
也可以使用windon.onload 解决顺序问题
js语言写在HTML页面,没有实现有效分离-->
<script>console.log('这是一段js代码')</script>
</body>
</html>
DOM
DOM是什么
- DOM是Document Object Model的缩写,译为文档对象模型
- DOM是一个独立于任何语言和平台的接口,允许任何语言或者脚本动态的访问和更新HTML文档的内容、- 结构和样式。该HTML页面会进一步处理,并且该处理的结果可以被合并到呈现的HTML页面中。
- DOM被设计用于解析HTML页面文档,方便JavaScript语言通过DOM访问和操作HTML页面中的内容。
Document对象
Document对象是什么
Document对象时DOM中标准规范中比较重要的对象之一,该对象提供了访问和更新HTML页面内容的属性和方法。Document对象提供的属性和方法,可以实现定位HTML页面中的元素,或者创建新的元素等功能。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
/* documeng对象
* DOM预定义 - 可以直接使用
* 得到的是HTML页面的源代码,该对象代表HTML页面*/
console.log(document);
/*确认document是一个对象*/
console.log(document instanceof Object);//true
/*document对象的属性和方法被定义在原型上*/
console.log(Document.prototype);
//不需要再创建
var document = new Document();
console.log(document);
</script>
</body>
</html>
document对象的继承链
Document对象是继承于Node对象的,Node对象也是DOM标准规范中非常重要而的对象之一,Node对象又是继承于EventTarge对象。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
//document对象时继承与Node的
console.log(document.prototype instanceof Node);//true
//Node对象是继承于EventTarget
console.log(Node.prototype instanceof EventTarget);//true
//document继承于EventTarget
console.log(document.prototype instanceof EventTarget);//true
</script>
</body>
</html>
定位页面元素
Document对象提供了属性和方法实现页面元素定位功能,这也是DOM规范中Document对象的主要应用之一。
Document对象提供实现页面元素定位的方法具有以下几种:
- getElementById()方法:通过页面元素的id属性值定位元素
- getElementsByName()方法:通过页面的name属性定位元素
- getElementsByTagName()方法:通过页面元素的元素名定位元素
- getElementsByClassName()方法:通过页面元素的class属性值定位元素
- querySelector()方法:通过CSS选择器定位第一个匹配的元素
- querySelectorAll()方法:通过CSS选择器定位所有匹配的元素
getElementById()方法
由于id属性是唯一的,所以通过这种方法定位的HTML元素也是唯一的
<body>
<button id="btn">按钮</button>
<script>
//使用getElementById()方法定位元素
var button = document.getElementById('btn');
//DOM无论是使用的还是得到的都应该是对象
console.log(button instanceof Object);//true
/* DOM提供了一系列对象 - 对应HTML的每一个元素
* <button>具有 HTMLButtonElementd 对象
* 元素的对象名格式 HTML元素名Element
* <div>具有 HTMLDivElement对象*/
</script>
</body>
getElementsByName()方法
<body>
<button name="btn">按钮</button>
<button name="btn">按钮</button>
<button name="btn">按钮</button>
<script>
//通过getElementByName()方法定位元素
//name属性不唯一,得到的结果可能是多个,也可能是一个
var buttonElements = document.getElementsByName('btn');
/* NodeList集合 - 类数组对象
* 通过索引值得到每一个元素*/
console.log(buttonElements[0]);
console.log(buttonElements instanceof NodeList);//true
</script>
</body>
getElementsByGayName()方法
<body>
<button>按钮</button>
<button>按钮</button>
<button>按钮</button>
<script>
//通过getElementsByTagNamr()方法定位元素
var buttonElements = document.getElementsByTagName('button');
//HTMLCollection集合 - 类数组对象
console.log(buttonElements[0])
console.log(buttonElements instanceof HTMLCollection);//true
</script>
</body>
getElementsByClassName()方法
<body>
<button class="btns">按钮</button>
<button class="btns">按钮</button>
<script>
var buttonElements = document.getElementsByClassName('btns');
//HTMLCollection集合 - 类数组对象
console.log(buttonElements[1]);
</script>
</body>
CSS选择器定位元素
<body>
<button class="btns">按钮</button>
<button class="btns">按钮</button>
<button class="btns">按钮</button>
<button class="btns">按钮</button>
<button class="btns">按钮</button>
<script>
//该方法返回的是第一个匹配的元素
//多个选择器之间用逗号分隔
var buttonElement1 = document.querySelector('.btns');
console.log(buttonElement1);
//该方法返回的是所有匹配元素的集合 - NodeList集合
//多个选择器之间用逗号分隔
var buttonElement2 = document.querySelectorAll('.btns');
console.log(buttonElement2);
</script>
</body>
节点集合NodeList
NodeList是一组元素节点的集合,每个节点具有索引值(从0开始,类似于数组),分为动态和静态两种
- 动态NodeList:如果文档中的节点树发生变化,则已存在的NodeList对象也发生变变化
getElementsByByName
getElementsByTagName
getElementsByClassName
- 静态NodeList:文档对象模型的任何改变都不会影响集合的内容
<body>
<button class="btns" id="btn"></button>
<button class="btns"></button>
<button class="btns"></button>
<button class="btns"></button>
<script>
/* //动态集合
var buttonElents = document.getElementsByClassName('btns');
//集合的长度
console.log(buttonElents.length);//4
//删除集合中一个元素
var btn = document.getElementById('btn');//定位一个元素
document.body.removeChild(btn);//删除定位的元素
console.log(buttonElents.length);//3*/
//静态集合
var btnElement = document.querySelectorAll('.btns');
//结合的长度
console.log(btnElement.length);//4
//删除集合中的一个元素
var btn = document.getElementById('btn');//定位一个元素
document.body.removeChild(btn);//删除定位的元素
console.log(btnElement.length);//4*/
</script>
</body>
定位页面的元素属性
Document对象提供了一些属性,定位HTML页面的比较特殊的元素
<body>
<button class="btns" id="btn">按钮</button>
<button class="btns">按钮</button>
<button class="btns">按钮</button>
<button class="btns">按钮</button>
<button class="btns">按钮</button>
<script>
console.log(document.documentElement);// <html>
console.log(document.head);// <head>
console.log(document.body);// <body>
console.log(document.images);// <image>
//循环遍历图片元素
var images = document.images;
for (var i=0; i<images.length; i++) {
var img = images[i];
console.log(img.src);
}
</script>
</body>
创建也变元素
创建元素节点
Document对象提供了createElement()方法创建元素节点
<body>
<script>
// 1.创建<button></button>元素
var btn = document.createElement('button');
// 2.获取<body>元素
var body = document.body;
// 3.向<body>元素添加子节点
body.appendChild(btn);
</script>
</body>
创建文本节点
Document对象提供了createTextNode()方法创建文本节点
<body>
<script>
// 1.创建<button></button>元素节点
var btn = document.createElement('button');
// 2.创建文本节点
var textNode = document.createTextNode('按钮');
// 3.向<button>元素添加子节点
btn.appendChild(textNode);
// 4.获取<body>元素
var body = document.body;
// 5.向<body>元素添加子节点
body.appendChild(btn);
</script>
</body>
创建属性节点
Document对象提供了createAtrribute()方法创建属性节点
<body>
<script>
// 1.创建<button></button>元素节点
var btn = document.createElement('button');
// 2.创建文本节点
var textNode = document.createTextNode('按钮');
// 3.向<button>元素添加子节点
btn.appendChild(textNode);
// 4.创建属性节点
var attrNode = document.createAttribute('id');
// 5.为属性节点设置值
attrNode.nodeValue = 'btn';
// 6.为<button>元素设置属性节点
btn.setAttributeNode(attrNode);
// 7.获取<body>元素
var body = document.body;
// 8.向<body>元素添加子节点
body.appendChild(btn);
</script>
</body>
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。