JavaScript
外部对象
由JS的运行环境提供的对象(API), JS的运行环境是浏览器, 也就是由浏览器提供的对象.
浏览器提供两组对象: BOM 和 DOM
BOM 浏览器对象
BOM 代表当前浏览器本身
浏览器对象:
- 对象引用 window
- window对象是访问 BOM 和 DOM的入口
- 使用window对象的属性和方法时候可以省略 window.
- window对象的结构(属性/方法)
- window
- history
- location
- screen
- navigator
- document
- alert()
- confirm()
- setInterval() clearImterval()
- setTimeout() clearTimeout();
- window
DOM对象(document)是window对象的一个属性
screen 屏幕
这个属性代表 当前浏览器屏幕信息,如分辨率等.
案例:
//显示当前屏幕的分辨率:
function testWindow(){
var w = window.screen.width;
var h = window.screen.height;
console.log("Screen:"+w+"X"+h);
}
提示: 如果需要检查当前屏幕的分辨率, 动态的调整显示内容, 就可以使用这个属性.
location 位置
代表当前浏览器的地址栏, 用于切换地址栏
- 包含属性 href
- 包含方法 reload()
案例:
//显示当前的地址栏URL信息
function showURL(){
var url=location.href;
console.log(url);
}
//跳转到指定的网页
function openDoc(){
location.href=
"http://doc.tedu.cn";
}
<input type="button"
value="刷新"
onclick="location.reload()">
<input type="button"
value="前进"
onclick="history.forward()">
history 历史记录
代表浏览器地址栏中的历史记录.
- 包含属性 length
- length历史记录数量
- 包含方法 go() back() forward()
- back() 回退
- forward() 前进
- go(相对记录号) 跳转到某个记录位置
案例:
<input type="button" value="前进"
onclick="history.forward()">
navigator 领航员
包含当前浏览器的元数据信息, 如: 厂商, 版本等
- 常用属性 userAgent
案例:
//在js中检查当前的浏览器版本信息
function checkUserAgent(){
var ua = navigator.userAgent;
console.log(ua);
var chromeReg = /chrome/i;
if(chromeReg.test(ua)){
console.log("这是谷歌浏览器");
}
}
每种浏览器的UserAgent都不相同, 是浏览器的身份证, UserAgent 经常用于检查JS所在的浏览器版本.
confirm() 确认方法
用与显示模态确认对话框, 其返回值是true/false
语法:
var value = confirm("今天你吃了吗?");
模态对话框显示时候, 会挡在浏览器窗口之前, 只能在处理对话框以后才能继续.
案例:
//使用确认框
function deleteObject(){
var del = confirm(
"你真的要删除吗?不可惜吗?");
if(del){
console.log("再见!");
}
}
定时器
浏览器提供了定时器功能, 其底层本质是线程. 定时器是并发执行的, 可以在网页中利用定时器处理并发问题.
由两种定时器:
- 间隔执行定时器
- 一次性执行定时器
间隔执行定时器
按照一定固定间隔时间执行的方法.
window提供了两个方法用于处理固定间隔执行
- setInterval() 启动定时器
- clearImterval() 取消定时器
语法:
var timerId = setInterval(方法, 间隔时间)
clearInterval(timerId);
案例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>定时器 定时执行</title>
<script type="text/javascript">
var id=[];//用于存储定时器的ID
function startTimer(){
//保存每个定时器ID
id[id.length] = setInterval(run, 1000);
console.log(id);
}
function run(){
console.log("Hello");
}
function stopTimer(){
//利用定时器ID清除定时器
for(var i=0; i<id.length; i++){
clearInterval(id[i]);
}
id=[];//清除没意义的定时器ID
}
</script>
</head>
<body>
<h1>定时器 定时执行</h1>
<input type="button" value="开始"
onclick="startTimer()">
<input type="button" value="停止"
onclick="stopTimer()">
</body>
</html>
案例, 在屏幕上显示动态时间:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>定时器 定时执行</title>
<script type="text/javascript">
var id=[];
function startTimer(){
//利用if语句检查,保证只有一个定时器在执行
if(id.length==0){
id[id.length]=setInterval(showTime,1000);
}
}
function showTime(){
var now = new Date();
var str = now.toLocaleTimeString();
var div=document.getElementById("timer");
div.innerHTML=str;
}
function stopTimer(){
if(id.length!=0){
clearInterval(id[0]);
}
}
</script>
</head>
<body>
<h1>定时器 定时执行</h1>
<input type="button" value="Start"
onclick="startTimer()">
<input type="button" value="Stop"
onclick="stopTimer()">
<div id="timer"></div>
</body>
</html>
执行一次的定时器
window提供了执行一次定时器, 用于处理延迟功能
API方法:
- setTimeout() 启动
- clearTimeout() 清除
语法:
var timerId = setTimeout(函数, 延迟时间);
clearTimeout(timerId);
案例, 提示消息自动隐藏功能:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>一次性定时器</title>
<script type="text/javascript">
function showInfo(){
var div = document.getElementById("info");
div.className="show";
//一次性定时器
setTimeout(function(){
var div = document.getElementById("info");
div.className="hide";
}, 2000);
}
</script>
<style type="text/css">
.show{
display: block; color: red;
padding: 5px;
width: 200px;
margin: 5px auto;
border: 1px solid #ddd;
/* 圆角 */
border-radius: 4px;
/* 阴影 */
box-shadow: 3px 3px 5px #ccc;
}
.hide{
display: none;
}
</style>
</head>
<body>
<h1>一次性定时器</h1>
<input type="button" value="显示"
onclick="showInfo()">
<div id="info" class="hide">
今天雾霾不错! 够味!!
</div>
</body>
</html>
提示: 为了解决页面内容耦合度问题(解耦)将显示样式和脚本以及页面内容进行了分类处理.
DOM 文档对象模型
文档对象DOM:当网页被加载时,浏览器会创建页面的文档对象模型
文档对象是HTML在浏览器中的解释结果. 文档对象在浏览器中存在.
文档对象的引用是document, 文档对象是window对象的属性
文档对象结构:
DOM提供了如下操作 - 查找节点 - 读取节点信息 - 修改节点信息 - 创建新节点 - 删除节点
通用属性
文档对象的每个节点(Node)都包含的属性称为通用属性
- nodeName:节点名称
- 元素节点和属性节点:标签或属性名称
- 文本节点:永远是 #text
- 文档节点: 永远是 #document
- nodeType:节点类型
- 返回数值
- 元素节点:返回 1
- 属性节点:返回 2
- 文本节点:返回 3
- 注释节点:返回 8
- 文档节点:返回 9
- 返回数值
案例, 显示文档节点信息:
function testNode(){
var e = document.getElementById("msg");
//找到文档节点 e 元素中的文档节点
var txt = e.childNodes[0];
//显示各种节点信息
console.log("document:"+
document.nodeType+","+
document.nodeName);
console.log("element:"+
e.nodeType+","+
e.nodeName);
console.log("text:"+
txt.nodeType+","+
txt.nodeName);
}
改变元素内容
元素的innerText 和 innerHTML 属性,可以读取和改变节点的内容:
- innerText
- 设置或获取位于对象起始和结束标签内的文本
- innerHTML
- 设置或获取位于对象起始和结束标签内的 HTML
innerHTML 可以用于向元素添加子元素或者清除元素内容
案例:
function insertHTML(){
var div = document.getElementById("demo");
var list='<ul>'+
'<li>Tom</li>'+
'<li>Jerry</li>'+
'</ul>';
div.innerHTML=list;
}
function insertText(){
var div=document.getElementById("demo");
div.innerText="<b>您好!</b>";
}
元素的属性
Dom API提供了通用的属性修改方法, 可以读写任何元素的任何属性.
API 方法:
- getAttribute() 获取元素的属性
- setAttribute() 修改/添加元素的属性
- removeAttribute() 删除元素的属性
案例:
function changeAttribute(){
var a = document.getElementById('doc');
var title = a.getAttribute('title');
console.log('当前:'+title);
a.setAttribute('title', 'TMOOC');
a.setAttribute('age', '88');
a.setAttribute('href','http://www.tmooc.cn');
a.innerHTML = "TMOOC";
}
阶段性完整案例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>DOM</title>
<script type="text/javascript">
function testNode(){
var e = document.getElementById("msg");
var txt = e.childNodes[0];
//显示各种节点信息
console.log("document:"+
document.nodeType+","+
document.nodeName);
console.log("element:"+
e.nodeType+","+
e.nodeName);
console.log("text:"+
txt.nodeType+","+
txt.nodeName);
}
function insertHTML(){
var div = document.getElementById("demo");
var list='<ul>'+
'<li>Tom</li>'+
'<li>Jerry</li>'+
'</ul>';
div.innerHTML=list;
}
function insertText(){
var div=document.getElementById("demo");
div.innerText="<b>您好!</b>";
}
function changeAttribute(){
var a = document.getElementById('doc');
var title = a.getAttribute('title');
console.log('当前:'+title);
a.setAttribute('title', 'TMOOC');
a.setAttribute('age', '88');
a.setAttribute('href','http://www.tmooc.cn');
a.innerHTML = "TMOOC";
}
</script>
</head>
<body>
<h1>Dom</h1>
<p id="msg">Hello</p>
<input type="button"
value="nodeDemo"
onclick="testNode()">
<div id="demo"></div>
<input type="button"
value="HTML"
onclick="insertHTML()">
<input type="button"
value="Text"
onclick="insertText()">
<p>
<input type="button" value="title"
onclick="changeAttribute()">
<a id="doc" href="http://doc.tedu.cn"
title="文档资源">文档</a>
</p>
</body>
</html>
元素节点的样式
dom提供了便捷的修改样式的属性
- style 内联样式属性
-
className class属性
-
通用属性修改方法完全能够替代两个属性, 但是这两个属性使用更加简洁.
利用class绑定样式效果时候, 可以实现样式与脚本的分离, 可以降低样式与代码的耦合度.
案例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>样式效果演示</title>
<script type="text/javascript">
function style1(){
var div = document.getElementById("div1");
//利用class属性修改元素的显示样式
div.className="alert";
}
function style2(){
var div = document.getElementById("div2");
//改变元素的内联样式
div.style.color="red";
div.style.border="1px solid #ddd";
div.style.borderRadius="4px";
}
</script>
<style type="text/css">
.alert{color: red; border:1px solid #ddd;}
</style>
</head>
<body>
<h1>样式效果演示</h1>
<input type="button" value="静静"
onclick="style1()">
<input type="button" value="莫莫"
onclick="style2()">
<div id="div1">我想静静</div>
<div id="div2">我想莫莫</div>
</body>
</html>
图片轮播案例
原理:
代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>图片轮播</title>
<style type="text/css">
#slide img{ display: none; }
</style>
</head>
<body>
<h1>图片轮播</h1>
<div id="slide">
<img alt="" src="../images/01.jpg"
style="display:block">
<img alt="" src="../images/02.jpg">
<img alt="" src="../images/03.jpg">
<img alt="" src="../images/04.jpg">
</div>
</body>
<script type="text/javascript">
//写在 div 元素之后, 这样才能获取元素
var div = document.getElementById("slide");
var ary = div.getElementsByTagName('img');
var index=0;
setInterval(function(){
for(var i=0; i<ary.length; i++){
ary[i].style.display="none";
//ary[i].removeAttribute('style');
}
ary[index++ % ary.length].style.display='block';
}, 500);
</script>
</html>
相关推荐
本篇内容将围绕"JavaScript总结导图"展开,深入探讨JavaScript的基础知识、核心概念以及高级特性。 1. **基础语法** JavaScript的基础包括变量声明(var、let、const)、数据类型(如字符串、数字、布尔值、null、...
JavaScript 课程内容总结 JavaScript 是一种广泛应用于网页开发的编程语言,以下是 JavaScript 的基础知识点总结。 数据类型 在 JavaScript 中,数据类型包括字符串(string)、数值型(number)、布尔型...
### JavaScript总结笔记 #### JavaScript简介 JavaScript是一种广泛使用的、基于对象和事件驱动的脚本语言。它最初由网景公司(Netscape)的布兰登·艾奇于1995年创建,并逐渐成为现代Web开发的核心技术之一。...
JavaScript总结,很适合学习基础的东西。上传的是图片格式是,方便大家打开。仅仅一张图,让你了解javascript。
2. JavaScript 与 Java 的区别 尽管名字相似,但 JavaScript 和 Java 是两种不同的编程语言。Java 是一种更为复杂、强大的编程语言,而 JavaScript 则是一种轻量级的脚本语言,主要用于网页的交互功能。JavaScript ...
本文将围绕“JavaScript学习总结”这一主题,深入探讨其基本概念、语法特性、DOM操作以及与CSS的协同使用。 一、JavaScript基础 JavaScript由Brendan Eich在1995年发明,最初是为了网页交互而设计,现在已经成为...
2. 安全性:JavaScript不允许直接访问本地文件系统,以保护用户数据安全。 3. 跨平台性:JavaScript可以在任何支持它的浏览器上运行,不受操作系统限制。 JavaScript与Java虽然名字相似,但两者是完全不同的语言。...
以下是对JavaScript基础知识的总结,主要关注在网页中使用的弹出对话框、函数调用以及带有参数的函数。 1) Alert Box `alert()` 函数用于显示一个包含警告信息的单行对话框,用户只能点击“确定”按钮关闭它。在...
### JavaScript知识点总结《一》 #### 第一章:初步认识JavaScript ##### 学习目标: - **理解JavaScript的特点** - **学会三种JavaScript的引入方式** ##### JavaScript的特点: 1. **了解特点前:** JavaScript...
这份名为“JavaScript必看全面总结.zip”的压缩包文件包含了一份深入的JavaScript学习笔记,旨在帮助开发者全面掌握这一动态类型的脚本语言。以下是根据标题和描述提炼出的JavaScript关键知识点: 1. **基础语法**...
自己弄得一个总结文档方便初学者快速学习 csdn真恶心
### JavaScript经验总结 #### 基础知识与脚本创建 - **创建脚本块**: - 使用 `<script language="JavaScript">` 来创建一个 JavaScript 的脚本块。 - 示例代码: ```html <script language="JavaScript"> //...
javascript对象创建方法总结,通过这些方法的总结,可以对对象有了更深一步的了解,也加深了对对象的巩固认识。
这篇总结涵盖了JavaScript语言的基础知识,帮助初学者快速上手并深入理解这门强大的脚本语言。 首先,我们来看“JavaScript 数据类型”。JavaScript有七种数据类型:Undefined、Null、Boolean、Number、BigInt、...
在学习完js课程之后,自己手动编写的总结文档,以及平常遇到的小问题的解决办法,通俗易懂,适合正在学习js的同学
javascript总结.xmind
JavaScript中的循环总结(教辅)JavaScript中的循环总结(教辅)JavaScript中的循环总结(教辅)JavaScript中的循环总结(教辅)JavaScript中的循环总结(教辅)JavaScript中的循环总结(教辅)JavaScript中的循环...
这篇经典JavaScript知识总结涵盖了从基础语法到高级特性的多个方面,旨在帮助有一定基础的开发者巩固和扩展他们的JavaScript知识。 1. **创建脚本块**:在HTML文件中,使用`<script>`标签来插入JavaScript代码。...
2. **文档对象模型 (DOM)**:用于操作 HTML 和 XML 文档,使得 JavaScript 可以与网页元素进行交互。 3. **浏览器对象模型 (BOM)**:提供了与浏览器窗口交互的方式,如打开新窗口、获取屏幕尺寸等。 ##### 1.1 ...