`

javascript总结2

 
阅读更多

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();

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("再见!");     
    }
}

定时器

浏览器提供了定时器功能, 其底层本质是线程. 定时器是并发执行的, 可以在网页中利用定时器处理并发问题.

由两种定时器:

  1. 间隔执行定时器
  2. 一次性执行定时器

间隔执行定时器

按照一定固定间隔时间执行的方法.

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>
  • 大小: 43.1 KB
分享到:
评论

相关推荐

    Javascript总结导图

    本篇内容将围绕"JavaScript总结导图"展开,深入探讨JavaScript的基础知识、核心概念以及高级特性。 1. **基础语法** JavaScript的基础包括变量声明(var、let、const)、数据类型(如字符串、数字、布尔值、null、...

    javascript课程内容总结

    JavaScript 课程内容总结 JavaScript 是一种广泛应用于网页开发的编程语言,以下是 JavaScript 的基础知识点总结。 数据类型 在 JavaScript 中,数据类型包括字符串(string)、数值型(number)、布尔型...

    JavaScript总结笔记

    ### JavaScript总结笔记 #### JavaScript简介 JavaScript是一种广泛使用的、基于对象和事件驱动的脚本语言。它最初由网景公司(Netscape)的布兰登·艾奇于1995年创建,并逐渐成为现代Web开发的核心技术之一。...

    一张图对Javascript总结,用思维导图总结的。

    JavaScript总结,很适合学习基础的东西。上传的是图片格式是,方便大家打开。仅仅一张图,让你了解javascript。

    JavaScript基础知识总结

    2. JavaScript 与 Java 的区别 尽管名字相似,但 JavaScript 和 Java 是两种不同的编程语言。Java 是一种更为复杂、强大的编程语言,而 JavaScript 则是一种轻量级的脚本语言,主要用于网页的交互功能。JavaScript ...

    JavaScript学习总结

    本文将围绕“JavaScript学习总结”这一主题,深入探讨其基本概念、语法特性、DOM操作以及与CSS的协同使用。 一、JavaScript基础 JavaScript由Brendan Eich在1995年发明,最初是为了网页交互而设计,现在已经成为...

    javaScript学习笔记总结.docx

    2. 安全性:JavaScript不允许直接访问本地文件系统,以保护用户数据安全。 3. 跨平台性:JavaScript可以在任何支持它的浏览器上运行,不受操作系统限制。 JavaScript与Java虽然名字相似,但两者是完全不同的语言。...

    javascript基础知识总结

    以下是对JavaScript基础知识的总结,主要关注在网页中使用的弹出对话框、函数调用以及带有参数的函数。 1) Alert Box `alert()` 函数用于显示一个包含警告信息的单行对话框,用户只能点击“确定”按钮关闭它。在...

    javascript知识点总结《一》

    ### JavaScript知识点总结《一》 #### 第一章:初步认识JavaScript ##### 学习目标: - **理解JavaScript的特点** - **学会三种JavaScript的引入方式** ##### JavaScript的特点: 1. **了解特点前:** JavaScript...

    JavaScript必看全面总结.zip

    这份名为“JavaScript必看全面总结.zip”的压缩包文件包含了一份深入的JavaScript学习笔记,旨在帮助开发者全面掌握这一动态类型的脚本语言。以下是根据标题和描述提炼出的JavaScript关键知识点: 1. **基础语法**...

    JavaScript的学习总结

    自己弄得一个总结文档方便初学者快速学习 csdn真恶心

    JavaScript经验总结

    ### JavaScript经验总结 #### 基础知识与脚本创建 - **创建脚本块**: - 使用 `&lt;script language="JavaScript"&gt;` 来创建一个 JavaScript 的脚本块。 - 示例代码: ```html &lt;script language="JavaScript"&gt; //...

    JavaScript对象创建总结

    javascript对象创建方法总结,通过这些方法的总结,可以对对象有了更深一步的了解,也加深了对对象的巩固认识。

    JavaScript语言基础知识总结(10张,神一样的总结!)

    这篇总结涵盖了JavaScript语言的基础知识,帮助初学者快速上手并深入理解这门强大的脚本语言。 首先,我们来看“JavaScript 数据类型”。JavaScript有七种数据类型:Undefined、Null、Boolean、Number、BigInt、...

    javascript总结

    在学习完js课程之后,自己手动编写的总结文档,以及平常遇到的小问题的解决办法,通俗易懂,适合正在学习js的同学

    javascript总结.xmind

    javascript总结.xmind

    JavaScript中的循环总结(教辅)

    JavaScript中的循环总结(教辅)JavaScript中的循环总结(教辅)JavaScript中的循环总结(教辅)JavaScript中的循环总结(教辅)JavaScript中的循环总结(教辅)JavaScript中的循环总结(教辅)JavaScript中的循环...

    js常用知识总结经典javascript知识总结,经典javascript知识总结

    这篇经典JavaScript知识总结涵盖了从基础语法到高级特性的多个方面,旨在帮助有一定基础的开发者巩固和扩展他们的JavaScript知识。 1. **创建脚本块**:在HTML文件中,使用`&lt;script&gt;`标签来插入JavaScript代码。...

    JavaScript知识点总结文档

    2. **文档对象模型 (DOM)**:用于操作 HTML 和 XML 文档,使得 JavaScript 可以与网页元素进行交互。 3. **浏览器对象模型 (BOM)**:提供了与浏览器窗口交互的方式,如打开新窗口、获取屏幕尺寸等。 ##### 1.1 ...

Global site tag (gtag.js) - Google Analytics