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学习总结, Javascript学习总结, Javascript学习总结, Javascript学习总结 Javascript学习总结
在课堂上学到的JavaScript进行总结,希望可以帮助更多的人,多多分享自己,从而能互相学习,如果写的有错误的地方也希望大家能指正
JavaScript知识点个人总结
JavaScript总结,很适合学习基础的东西。上传的是图片格式是,方便大家打开。仅仅一张图,让你了解javascript。
JavaScript 总结 重要知识点 JavaScript js总结
javascript基础知识总结,详细的介绍了基础知识
javaScript学习笔记总结.docx
JavaScript学习笔记,详细总结。总结了JavaScript学习过程中的重点、难点。
自己弄得一个总结文档方便初学者快速学习 csdn真恶心
javascript对象创建方法总结,通过这些方法的总结,可以对对象有了更深一步的了解,也加深了对对象的巩固认识。
在学习完js课程之后,自己手动编写的总结文档,以及平常遇到的小问题的解决办法,通俗易懂,适合正在学习js的同学
JavaScript 概述 JavaScript是基于对象和事件的脚本语言。 特点: 1. 安全性(不允许直接访问本地硬盘),它可以做的就是信息的动态交互。...2. 跨平台性。(只要是可以解释Js的浏览器都可以执行,和平台无关。)
我的js总结,不保证没有错误,哪位发现请指教~~
javascript知识点总结《一》
javascript总结.xmind
JavaScript中的循环总结(教辅)JavaScript中的循环总结(教辅)JavaScript中的循环总结(教辅)JavaScript中的循环总结(教辅)JavaScript中的循环总结(教辅)JavaScript中的循环总结(教辅)JavaScript中的循环...
开发工具与关键技术:Adobe Dreamweaver JavaScript 事件相关知识点总结 网路安全
总结javascript基础知识,很全面
Javascript 总结