JavaScript
- JavaScript 是互联网上最流行的脚本语言,这门语言可用于 HTML 和 Web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。使用js之后可以在页面中实现特效,将页面中的信息实现动态化,比如js轮播图 。
一.js的三种使用方式
1. 行内js
- 在标签内的绑定事件,编写js脚本代码,实现行内js,但尽量不要使用。
<body>
<button onclick="javascript:alert('这是第一个按钮')">按钮</button>
<br />
<button onclick="alert('这是第二个按钮')">按钮</button>
<br />
<button onclick="aa=function aa(){alert('这是用自定义的函数的第三个按钮')}()">按钮</button>
</body>
2. 内联js
- 在当前的html页面中,使用
<script></script>
标签使用,比行内更加的方便。 - 所有的js操作可以在当前的html页面中使用,如果要在其他的标签中使用,使用html的事件进行绑定。
- this关键字表示的是当前对象。 谁来调用我的方法,this就表示那个对象。
- this关键字在函数中调用,属于window对象。
- this关键字在html标签中使用表示的元素对象。
<body>
<h4 onclick="test01()">使用内联函数</h4>
<!--事件绑定函数调用,传递参数 -->
<input type="button" value="100" onclick="test02(200)" />
<br />
<input type="button" value="300" onclick="test02(this.value)" />
</body>
<script>
function test01(){
alert("函数1");
}
function test02(num){
alert("test02函数"+num);
alert(this);
}
</script>
- this的结果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/03025eb75e5536460cc5ea6155a10267.png)
3.外部js
- 使用js后缀的文件,被多个html同时引用,重用性更高。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/46e5c5f9c3f718f126eb4d082f8d4a39.png)
- 结果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2a2b3cdd5350f3602dd306b4dae60af3.png)
4.注意
- js脚本中一行代码的错误,会导致当前函数错误代码之后的代码全部不能正常执行,使用浏览器的开发者模式,检查错误信息,或者在js 脚本中自己逐行进行测试。(alert()常被作为测试语句)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5c10ea8ffc78ea534318be6646a85134.png)
所有的类型都是对象,都会拥有内置的函数。 - 运算符,流程控制,循环,都与java使用方式一样。
- for…in :可以进行对象的属性遍历.
二.Javascript 的对象
1. 浏览器对象window对象
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7f8570367f3622f2f73758214bde8a91.png)
-
结构
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/39d39156697c5770f5261ac3e1a82be5.png)
-
浏览器对象的分层结构(详细结构)![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/dcb7b28810b5bfe82d6c7520d9b4222c.png)
2.window
2.1window属性
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/92bc1dd92e8a5d92250729a1aa0971e3.png)
2.2window方法
- window对象的常用方法, window对象的方法调用 ,其window对象都是可以省略的 。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/601bb0aa96a5dbe4f7a15ca7646d228e.png)
方法 | 参数含义 |
---|
open(“打开窗口的url”,“窗口名”,“窗口特征”) | 窗口特征可以任意组合(height:窗口高度;width:窗口宽度;top:窗口距离屏幕上方的像素值;left:窗口距离屏幕左侧的像素值;) |
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>浏览器对象</title>
</head>
<body>
<p onclick="opennew()">开启一个新的页面</p>
</body>
<script>
window.alert("世界美好与你环环相扣");
alert("你是人间四月天");
function opennew(){
window.open("轮播图.html","测试","height=300px,width=300px,top=300px,left=200px");
}
</script>
</html>
2.3小例子
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>随机广告</title>
<script>
setInterval(move,1000);
var num=50;
function move(){
num=num+50;
document.getElementById("Layer1").style.left=num+"px";
document.getElementById("Layer1").style.top=num+"px";
}
</script>
</head>
<body onload="move()">
<div id="Layer1" style="position: absolute; left:14px; width:150px; top:44px; height: 102px; z-index: 1 ;">
<a href="三级联动.html"><img src="img/德云社02.jpg" width="250" height="200" border="0"></a>
</div>
<h2>随机漂浮的广告</h2>
</body>
</html>
3.Document对象
3.1属性
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ba55984f59bb294da6f4093ce1d0c364.png)
3.2方法
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/03db593457c5bb53bd7d077ba5576de1.png)
4.history对象
4.1方法
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3c99b68ae5211bf054ab29f8ce1497bc.png)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<a href="two.html">第二页</a>
<p onclick="two()">下一页</p>
<p onclick="two01()">下一页</p>
</body>
<script>
function two(){
window.history.forward();
}
function two01(){
window.history.go(1);
}
</script>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<a href="one.html">第一页</a>
<p onclick="one01()">上一页</p>
</body>
<script>
function one(){
window.history.back();
}
function one01(){
window.history.go(-1);
}
</script>
</html>
- 结果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c3de54fa0c6ece287067dd809203ae7f.png)
5.Location对象
5.1属性
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/51243be5f507694940cf7ceab806b93b.png)
5.2方法
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/12385b15aec2418073dca4bbad9b268a.png)
Location对象的方法
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>文档对象模型</title>
</head>
<body>
<a id="a01" class="one" name="lj" href="#?name='zs'&pass=123456">第一个链接 </a>
<a id="a02" class="one1" name="lj" href="document对象.html">第二个链接 </a>
<a id="a03" class="one" name="lj" href="javascript:void(0)">第三个链接 </a>
<a id="a03" class="one1" name="lj" href="document对象.html?name='zs'&pass=123456">第四个链接 </a>
</body>
<script>
function getElement(){
var a01=document.getElementById("a01");
var name=document.getElementsByName("lj");
var classname=document.getElementsByClassName("one1");
var elementname=document.getElementsByTagName("a");
alert(elementname.length);
}
getElement();
</script>
</html>
三.处理表和表单元素事件
1.JavaScript事件
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/60c6d8074cf3133ddc4835122cb807fe.png)
2.文本框对象–事件处理程序
事件 | 含义 |
---|
onBlur | 文本框失去焦点 |
onChange | 文本框的值被修改 |
onFocus | 光标进入文本框中 |
方法 | 含义 |
---|
focus() | 获取焦点,即获得鼠标光标 |
select() | 选中文本内容,突出显示输入区域 |
属性 | 含义 |
---|
readonly | 只读,文本框中的内容不能修改 |
3.按钮–事件处理程序
事件处理程序 | 说明 |
---|
onSubmit | 表单提交事件,单击“提交”按钮时产生,此事件属于元素,不属于提交按钮 |
onClick | 按钮单击事件 |
4.复选框–事件处理程序
事件 | 含义 |
---|
onBlur | 复选框失去焦点 |
onFocus | 复选框获得焦点 |
onClick | 复选框被选中或取消选定 |
属性 | 含义 |
---|
checked | 复选框是否被选中,选中为true,未选中为false。您可以使用此属性查看复选框的状态或设置复选框是否被选中 |
value | 设置或获取复选框的值 |
5.单选按钮–事件和属性
事件 | 含义 |
---|
onBlur | 单选按钮失去焦点 |
onFocus | 单选按钮获得焦点 |
onClick | 单选按钮被选中或取消选定 |
属性 | 含义 |
---|
checked | 单选按钮是否被选中,选中为true,未选中为false。您可以使用此属性查看单选按钮的状态或设置单选按钮是否被选中 |
value | 设置或获取单选按钮的值 |
6.下拉列表框–事件和属性
事件 | 含义 |
---|
onBlur | 下拉列表框失去焦点 |
onChange | 当选项发生改变时产生 |
onFocus | 下拉列表框获得焦点 |
属性 | 含义 |
---|
value | 下拉列表框中,被选选项的值 |
options | 所有的选项组成一个数组,options表示整个选项数组,第一个选项即为options[0],第二个即为options[1],其他以此类推 |
selecedIndex | 返回被选择的选项的索引号,如果选中第一个返回0,第二个返回1,其他类推 |
四.DOM节点
document文档对象
- 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。文档流–所有html资源保存在文档流中。
- document对象是js是用的最多一个操作.
1.一些常用的HTML DOM方法
1.1获取元素对象
方法 | 描述 |
---|
getElementById() | 返回带有指定 ID 的元素。 |
getElementsByTagName() | 返回包含带有指定标签名称的所有元素的节点列表(集合/节点数组) |
getElementsByClassName() | 返回包含带有指定类名的所有元素的节点列表。 |
getElementsByName() | 返回带有指定name的所有元素的节点列表。 |
1.2更新内容
方法 | 描述 |
---|
appendChild() | 把新的子节点添加到指定节点。 |
removeChild() | 删除子节点。 |
replaceChild() | 替换子节点。 |
insertBefore() | 在指定的子节点前面插入新的子节点。 |
createElement() | 创建元素节点。 |
createTextNode() | 创建文本节点。 |
createAttribute() | 创建属性节点。 |
getAttribute() | 返回指定的属性值。 |
setAttribute() | 把指定属性设置或修改为指定的值。 |
2.一些常用的 HTML DOM 属性:
- innerHTML - 节点(元素)的文本值
- parentNode - 节点(元素)的父节点
- childNodes - 节点(元素)的子节点
- attributes - 节点(元素)的属性节点
- nodeName -节点的名称
- nodeValue -节点的值
- nodeType -节点的类型
2.1访问 HTML 元素(节点)
常用的访问 HTML 元素的方法:
- 通过使用 getElementById() 方法
- 通过使用 getElementsByTagName() 方法
- 通过使用 getElementsByClassName() 方法
- 通过使用 getElementsByName() 方法
方法 | 返回值 | 语法 |
---|
getElementById() | 返回带有指定 ID 的元素 | document.getElementById(“id值”) ; |
getElementsByTagName() | 返回带有指定标签名的所有元素 | 元素.getElementsByTagName(“标签名称”); |
getElementsByClassName() | 返回带有指定class 的元素 | 元素.getElementsByTagName(“class值”) |
getElementsByName() | 返回带有指定name的元素 | 元素.getElementsByTagName(“name值”); |
2.2对于元素节点的操作
常用的操作元素节点的增、删、改、及重置所在位置的方法:
- 通过使用 appendChild()方法
- 通过使用 removeChild()方法
- 通过使用 replaceChild()方法
- 通过使用 insertBefore()方法
方法 | 功能 | 语法 |
---|
appendChild() | 把新的子节点添加到指定节点。 | node.appendChild(node) |
removeChild() | 删除子节点。 | node.removeChild(node) |
replaceChild() | 替换子节点。 | node.replaceChild(newnode,oldnode) |
insertBefore() | 在指定的子节点前面插入新的子节点。 | node.insertBefore(newnode,existingnode) |
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>节点的操作</title>
</head>
<body>
<span id="s01">第一个节点</span>
<div id="div01">
<p id="p01">div中的内容</p>
</div>
<button onclick="appendnode()" >追加节点</button>
<button onclick="delnode()" >删除节点</button>
<button onclick="updatenode()" >替换节点</button>
<button onclick="updatetext()" >获取和更新文字内容</button>
<button onclick="selectall()" >获取某节点下的所有节点</button>
</body>
<script>
function appendnode(){
var s01=document.getElementById("s01");
var div01=document.getElementById("div01");
div01.appendChild(s01);
}
function delnode(){
var p01=document.getElementById("p01");
var div01=document.getElementById("div01");
div01.removeChild(p01);
}
function updatenode(){
var p01=document.getElementById("p01");
var div01=document.getElementById("div01");
var h1=document.createElement("h1");
h1.setAttribute("id","h01");
h1.innerHTML="新替换的内容";
div01.replaceChild(h1,p01);
}
function updatetext(){
var span01=document.getElementById("s01");
var smess=span01.innerText;
alert(smess);
span01.innerText="<h2>我是更新之后的内容</h2>";
}
function selectall(){
var divs=document.querySelectorAll("div");
alert(divs.length);
}
</script>
</html>
2.3对于节点属性及内容的操作
常用的创建元素属性、节点、文本及获取、修改属性值方法:
- 通过使用 createElement()方法
- 通过使用 createTextNode()方法
- 通过使用 createAttribute()方法
- 通过使用 getAttribute()方法
- 通过使用 setAttribute()方法
方法 | 功能 | 语法 |
---|
createElement() | 创建元素节点。 | createElement(name) |
createTextNode() | 创建文本节点。 | createTextNode(data) |
createAttribute() | 创建属性节点。 | document.createAttribute(attributename) |
getAttribute() | 返回指定的属性值。 | element.getAttribute(attributename) |
setAttribute() | 把指定属性设置或修改为指定的值。 | element.setAttribute(attributename,attributevalue) |
常用的HTML DOM 属性
- 通过使用 innerHTML 属性
- 通过使用 parentNode 属性
- 通过使用 childNodes 属性
- 通过使用 attributes 属性
- 通过使用 nodeName 属性
- 通过使用 nodeValue 属性
- 通过使用 nodeType 属性
方法 | 功能 | 语法 |
---|
innerHTML | 设置或返回表格行的开始和结束标签之间的 HTML | tablerowObject.innerHTML=HTML |
parentNode | 以 Node 对象的形式返回指定节点的父节点;如果指定节点没有父节点,则返回 null。 | node.parentNode |
childNodes | 返回节点的子节点集合,以 NodeList 对象 | element.childNodes |
attributes | 返回指定节点的属性集合,即 NamedNodeMap | node.attributes |
nodeName | nodeName 属性指定节点的节点名称。如果节点是元素节点,则 nodeName 属性返回标签名。入股节点是属性节点,则 nodeName 属性返回属性的名称。 对于其他节点类型,nodeName 属性返回不同节点类型的不同名称。 | node.nodeName |
nodeValue | 设置或返回指定节点的节点值 | 设置节点值:node.nodeValue=value;返回节点值:node.nodeValue |
nodeType | nodeType 属性返回以数字值返回指定节点的节点类型。 如果节点是元素节点,则 nodeType 属性将返回 1。 如果节点是属性节点,则 nodeType 属性将返回 2。如果节点是元素或属性中的文本内容,则 nodeType 属性将返回 3。 | node.nodeType |
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<a href="http://www.baidu.com" id="a01" >百度连接</a>
<!--img 的src 是发送一个请求 -->
<img src="img/德云社06.jpg" id="img" alt="这是一个图片" height="300px" width="300px" />
<button onclick="geta()">获取属性值</button>
<button onclick="getChilds()">获取body所有的子节点</button>
<hr />
<span id="cs" style="font-size: 18px;">我是用来修改样式的 </span>
<button onclick="setCss()">修改样式</button>
</body>
<script>
function geta(){
var a =document.getElementById("a01");
alert(a.href);
var img =document.getElementById("img");
alert(img.src);
alert(img.height);
}
function getChilds(){
var body=document.getElementsByTagName("body");
alert(body[0]);
var nodes=body[0].childNodes;
alert(nodes.length)
}
function setCss(){
var cs=document.getElementById("cs");
alert(cs.style.fontSize);
cs.style.color="red";
}
</script>
</html>