• JavaScript学习笔记——BOM


    相关知识点

    什么是BOM

    • ECMAScript无疑是JavaScript的核心,但是要想在浏 览器中使用JavaScript,那么BOM(浏览器对象模型) 才是真正的核心。

    • BOM 提供了很多对象,用于访问浏览器的功能,这些 功能与任何网页内容无关。

    • BOM将浏览器中的各个部分转换成了一个一个的对象, 我们通过修改这些对象的属性,调用他们的方法,从而 控制浏览器的各种行为。

    window对象

    • window对象是BOM的核心,它表示一个浏览器的实例。

    • 在浏览器中我们可以通过window对象来访问操作浏览 器,同时window也是作为全局对象存在的。

    • 全局作用域: – window对象是浏览器中的全局对象,因此所有在全局作用 域中声明的变量、对象、函数都会变成window对象的属性 和方法。

    窗口大小

    • 浏览器中提供了四个属性用来确定窗口的

    大小: – 网页窗口的大小

    • innerWidth

    • innerHeight

    – 浏览器本身的尺寸

    • outerWidth

    • outerHeight 打开窗口

    • 使用 window.open() 方法既可以导航到一个 特定的 URL,也可以打开一个新的浏览器窗口。

    • 这个方法需要四个参数:

    – 需要加载的url地址

    – 窗口的目标

    – 一个特性的字符串

    – 是否创建新的历史记录

    超时调用

    • 超时调用:

    – setTimeout() – 超过一定时间以后执行指定函数 – 需要连个参数:

    • 要执行的内容

    • 超过的时间

    • 取消超时调用 – clearTimeout()

    • 超时调用都是在全局作用域中执行的。

    间歇调用

    • 间歇调用: – setInterval() – 每隔一段时间执行指定代码

    – 需要两个参数:

    • 要执行的代码 • 间隔的时间 • 取消间隔调用: – clearInterval() 系统对话框

    • 浏览器通过 alert() 、 confirm() 和 prompt() 方法可以调用系统对话框向用户显示消息。

    • 它们的外观由操作系统及(或)浏览器设置决 定,而不是由 CSS 决定。

    • 显示系统对话框时会导致程序终止,当关闭对 话框程序会恢复执行。

    alert

    • alert()接收一个字符串并显示给用户。调用 alert()方法会向用户显示一个包含一个确认 按钮的对话框。

    • 例如: – alert("Hello World"); confirm • confirm和alert类似,只不过confirm弹出的对话 框有一个确认和取消按钮。用户可以通过按钮来 确认是否执行操作。

    • 例如: – confirm('你确定吗?');

    • 这个函数的执行会返回一个布尔值,如果选择确 定则返回true,如果点击取消则返回false。

    prompt

    • prompt会弹出一个带输入框的提示框,并 可以将用户输入的内容返回。

    • 它需要两个值作为参数: – 显示的提示文字 – 文本框中的默认值

    • 例子: – prompt('你的年龄是?','18');

    location对象

    • location对象提供了与当前窗口中加载的文档有关的信息,还提供了一些导 航功能。

    • href属性: – href属性可以获取或修改当前页面的完整的URL地址,使浏览器跳转到指定页面。

    • assign() 方法 – 所用和href一样,使浏览器跳转页面,新地址错误参数传递到assign ()方法中

    • replace()方法 – 功能一样,只不过使用replace方法跳转地址不会体现到历史记录中。

    • reload() 方法 – 用于强制刷新当前页面

    navigator对象

    • navigator 对象包含了浏览器的版本、浏览 器所支持的插件、浏览器所使用的语言等 各种与浏览器相关的信息。

    • 我们有时会使用navigator的userAgent属 性来检查用户浏览器的版本。 screen对象

    • screen 对象基本上只用来表明客户端的能 力,其中包括浏览器窗口外部的显示器的 信息,如像素宽度和高度等。

    • 该对象作用不大,我们一般不太使用。

    history对象

    • history 对象保存着用户上网的历史记录, 从窗口被打开的那一刻算起。

    • go() – 使用 go() 方法可以在用户的历史记录中任意跳 转,可以向后也可以向前。

    • back() – 向后跳转

    • forward() – 向前跳转 document

    • document对象也是window的一个属性, 这个对象代表的是整个网页的文档对象。

    • 我们对网页的大部分操作都需要以 document对象作为起点。

    • 关于document对象的内容,我们后边还要 具体讲解。

    BOM

                 *  - 浏览器对象模型

                 *  - BOM可以使我们通过JS来操作浏览器

                 *  - 在BOM中为我们提供了一组对象,用来完成对浏览器的操作

                 *  - BOM对象

                 *      Window

                 *          - 代表的是整个浏览器的窗口,同时window也是网页中的全局对象

                 *      Navigator

                 *          - 代表的当前浏览器的信息,通过该对象可以来识别不同的浏览器

                 *      Location

                 *          - 代表当前浏览器的地址栏信息,通过Location可以获取地址栏信息,或者操作浏览器跳转页面

                 *      History

                 *          - 代表浏览器的历史记录,可以通过该对象来操作浏览器的历史记录

                 *              由于隐私原因,该对象不能获取到具体的历史记录,只能操作浏览器向前或向后翻页

                 *              而且该操作只在当次访问时有效

                 *      Screen

                 *          - 代表用户的屏幕的信息,通过该对象可以获取到用户的显示器的相关的信息

                 *

                 *

                 *      这些BOM对象在浏览器中都是作为window对象的属性保存的,

                 *          可以通过window对象来使用,也可以直接使用

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8" />
    5. <title>title>
    6. <script type="text/javascript">
    7. //console.log(navigator);
    8. //console.log(location);
    9. //console.log(history);
    10. /*
    11. * Navigator
    12. * - 代表的当前浏览器的信息,通过该对象可以来识别不同的浏览器
    13. * - 由于历史原因,Navigator对象中的大部分属性都已经不能帮助我们识别浏览器了
    14. * - 一般我们只会使用userAgent来判断浏览器的信息,
    15. * userAgent是一个字符串,这个字符串中包含有用来描述浏览器信息的内容,
    16. * 不同的浏览器会有不同的userAgent
    17. *
    18. * 火狐的userAgent
    19. * Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0
    20. *
    21. * Chrome的userAgent
    22. * Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36
    23. *
    24. * IE8
    25. * Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
    26. *
    27. * IE9
    28. * Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
    29. *
    30. * IE10
    31. * Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
    32. *
    33. * IE11
    34. * Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko
    35. * - 在IE11中已经将微软和IE相关的标识都已经去除了,所以我们基本已经不能通过UserAgent来识别一个浏览器是否是IE了
    36. */
    37. //alert(navigator.appName);
    38. var ua = navigator.userAgent;
    39. console.log(ua);
    40. if(/firefox/i.test(ua)){
    41. alert("你是火狐!!!");
    42. }else if(/chrome/i.test(ua)){
    43. alert("你是Chrome");
    44. }else if(/msie/i.test(ua)){
    45. alert("你是IE浏览器~~~");
    46. }else if("ActiveXObject" in window){
    47. alert("你是IE11,枪毙了你~~~");
    48. }
    49. /*
    50. * 如果通过UserAgent不能判断,还可以通过一些浏览器中特有的对象,来判断浏览器的信息
    51. * 比如:ActiveXObject
    52. */
    53. /*if("ActiveXObject" in window){
    54. alert("你是IE,我已经抓住你了~~~");
    55. }else{
    56. alert("你不是IE~~~");
    57. }*/
    58. /*alert("ActiveXObject" in window);*/
    59. script>
    60. head>
    61. <body>
    62. body>
    63. html>

     History

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>title>
    6. <script type="text/javascript">
    7. /*
    8. * History
    9. * - 对象可以用来操作浏览器向前或向后翻页
    10. */
    11. window.onload = function(){
    12. //获取按钮对象
    13. var btn = document.getElementById("btn");
    14. btn.onclick = function(){
    15. /*
    16. * length
    17. * - 属性,可以获取到当成访问的链接数量
    18. */
    19. //alert(history.length);
    20. /*
    21. * back()
    22. * - 可以用来回退到上一个页面,作用和浏览器的回退按钮一样
    23. */
    24. //history.back();
    25. /*
    26. * forward()
    27. * - 可以跳转下一个页面,作用和浏览器的前进按钮一样
    28. */
    29. //history.forward();
    30. /*
    31. * go()
    32. * - 可以用来跳转到指定的页面
    33. * - 它需要一个整数作为参数
    34. * 1:表示向前跳转一个页面 相当于forward()
    35. * 2:表示向前跳转两个页面
    36. * -1:表示向后跳转一个页面
    37. * -2:表示向后跳转两个页面
    38. */
    39. history.go(-2);
    40. };
    41. };
    42. script>
    43. head>
    44. <body>
    45. <button id="btn">点我一下button>
    46. <h1>Historyh1>
    47. <a href="01.BOM.html">去BOMa>
    48. body>
    49. html>

     Location

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>title>
    6. <script type="text/javascript">
    7. /*
    8. * Location
    9. * - 该对象中封装了浏览器的地址栏的信息
    10. */
    11. window.onload = function(){
    12. //获取按钮对象
    13. var btn = document.getElementById("btn");
    14. btn.onclick = function(){
    15. //如果直接打印location,则可以获取到地址栏的信息(当前页面的完整路径)
    16. //alert(location);
    17. /*
    18. * 如果直接将location属性修改为一个完整的路径,或相对路径
    19. * 则我们页面会自动跳转到该路径,并且会生成相应的历史记录
    20. */
    21. //location = "http://www.baidu.com";
    22. //location = "01.BOM.html";
    23. /*
    24. * assign()
    25. * - 用来跳转到其他的页面,作用和直接修改location一样
    26. */
    27. //location.assign("http://www.baidu.com");
    28. /*
    29. * reload()
    30. * - 用于重新加载当前页面,作用和刷新按钮一样
    31. * - 如果在方法中传递一个true,作为参数,则会强制清空缓存刷新页面
    32. */
    33. //location.reload(true);
    34. /*
    35. * replace()
    36. * - 可以使用一个新的页面替换当前页面,调用完毕也会跳转页面
    37. * 不会生成历史记录,不能使用回退按钮回退
    38. */
    39. location.replace("01.BOM.html");
    40. };
    41. };
    42. script>
    43. head>
    44. <body>
    45. <button id="btn">点我一下button>
    46. <h1>Locationh1>
    47. <input type="text" />
    48. <a href="01.BOM.html">去BOMa>
    49. body>
    50. html>

     定时调用

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>title>
    6. <script type="text/javascript">
    7. window.onload = function(){
    8. //获取count
    9. var count = document.getElementById("count");
    10. //使count中的内容,自动切换
    11. /*
    12. * JS的程序的执行速度是非常非常快的
    13. * 如果希望一段程序,可以每间隔一段时间执行一次,可以使用定时调用
    14. */
    15. /*for(var i=0 ; i<10000 ; i++){
    16. count.innerHTML = i;
    17. alert("hello");
    18. }*/
    19. /*
    20. * setInterval()
    21. * - 定时调用
    22. * - 可以将一个函数,每隔一段时间执行一次
    23. * - 参数:
    24. * 1.回调函数,该函数会每隔一段时间被调用一次
    25. * 2.每次调用间隔的时间,单位是毫秒
    26. *
    27. * - 返回值:
    28. * 返回一个Number类型的数据
    29. * 这个数字用来作为定时器的唯一标识
    30. */
    31. var num = 1;
    32. var timer = setInterval(function(){
    33. count.innerHTML = num++;
    34. if(num == 11){
    35. //关闭定时器
    36. clearInterval(timer);
    37. }
    38. },1000);
    39. //console.log(timer);
    40. //clearInterval()可以用来关闭一个定时器
    41. //方法中需要一个定时器的标识作为参数,这样将关闭标识对应的定时器
    42. //clearInterval(timer);
    43. };
    44. script>
    45. head>
    46. <body>
    47. <h1 id="count">h1>
    48. body>
    49. html>

      练习

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>title>
    6. <script type="text/javascript">
    7. window.onload = function(){
    8. /*
    9. * 使图片可以自动切换
    10. */
    11. //获取img标签
    12. var img1 = document.getElementById("img1");
    13. //创建一个数组来保存图片的路径
    14. var imgArr = ["img/1.jpg","img/2.jpg","img/3.jpg","img/4.jpg","img/5.jpg"];
    15. //创建一个变量,用来保存当前图片的索引
    16. var index = 0;
    17. //定义一个变量,用来保存定时器的标识
    18. var timer;
    19. //为btn01绑定一个单击响应函数
    20. var btn01 = document.getElementById("btn01");
    21. btn01.onclick = function(){
    22. /*
    23. * 目前,我们每点击一次按钮,就会开启一个定时器,
    24. * 点击多次就会开启多个定时器,这就导致图片的切换速度过快,
    25. * 并且我们只能关闭最后一次开启的定时器
    26. */
    27. //在开启定时器之前,需要将当前元素上的其他定时器关闭
    28. clearInterval(timer);
    29. /*
    30. * 开启一个定时器,来自动切换图片
    31. */
    32. timer = setInterval(function(){
    33. //使索引自增
    34. index++;
    35. //判断索引是否超过最大索引
    36. /*if(index >= imgArr.length){
    37. //则将index设置为0
    38. index = 0;
    39. }*/
    40. index %= imgArr.length;
    41. //修改img1的src属性
    42. img1.src = imgArr[index];
    43. },1000);
    44. };
    45. //为btn02绑定一个单击响应函数
    46. var btn02 = document.getElementById("btn02");
    47. btn02.onclick = function(){
    48. //点击按钮以后,停止图片的自动切换,关闭定时器
    49. /*
    50. * clearInterval()可以接收任意参数,
    51. * 如果参数是一个有效的定时器的标识,则停止对应的定时器
    52. * 如果参数不是一个有效的标识,则什么也不做
    53. */
    54. clearInterval(timer);
    55. };
    56. };
    57. script>
    58. head>
    59. <body>
    60. <img id="img1" src="img/1.jpg"/>
    61. <br /><br />
    62. <button id="btn01">开始button>
    63. <button id="btn02">停止button>
    64. body>
    65. html>

    移动div练习

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>title>
    6. <style type="text/css">
    7. #box1{
    8. width: 100px;
    9. height: 100px;
    10. background-color: red;
    11. position: absolute;
    12. }
    13. style>
    14. <script type="text/javascript">
    15. //使div可以根据不同的方向键向不同的方向移动
    16. /*
    17. * 按左键,div向左移
    18. * 按右键,div向右移
    19. * 。。。
    20. */
    21. window.onload = function(){
    22. //定义一个变量,来表示移动的速度
    23. var speed = 10;
    24. //创建一个变量表示方向
    25. //通过修改dir来影响移动的方向
    26. var dir = 0;
    27. //开启一个定时器,来控制div的移动
    28. setInterval(function(){
    29. /*
    30. * 37 左
    31. * 38 上
    32. * 39 右
    33. * 40 下
    34. */
    35. switch(dir){
    36. case 37:
    37. //alert("向左"); left值减小
    38. box1.style.left = box1.offsetLeft - speed + "px";
    39. break;
    40. case 39:
    41. //alert("向右");
    42. box1.style.left = box1.offsetLeft + speed + "px";
    43. break;
    44. case 38:
    45. //alert("向上");
    46. box1.style.top = box1.offsetTop - speed + "px";
    47. break;
    48. case 40:
    49. //alert("向下");
    50. box1.style.top = box1.offsetTop + speed + "px";
    51. break;
    52. }
    53. },30);
    54. //为document绑定一个按键按下的事件
    55. document.onkeydown = function(event){
    56. event = event || window.event;
    57. //当用户按了ctrl以后,速度加快
    58. if(event.ctrlKey){
    59. speed = 500;
    60. }else{
    61. speed = 10;
    62. }
    63. //使dir等于按键的值
    64. dir = event.keyCode;
    65. };
    66. //当按键松开时,div不再移动
    67. document.onkeyup = function(){
    68. //设置方向为0
    69. dir = 0;
    70. };
    71. };
    72. script>
    73. head>
    74. <body>
    75. <div id="box1">div>
    76. body>
    77. html>

    延时调用

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>title>
    6. <script type="text/javascript">
    7. var num = 1;
    8. //开启一个定时器
    9. /*setInterval(function(){
    10. console.log(num++);
    11. },3000);*/
    12. /*
    13. * 延时调用,
    14. * 延时调用一个函数不马上执行,而是隔一段时间以后在执行,而且只会执行一次
    15. *
    16. * 延时调用和定时调用的区别,定时调用会执行多次,而延时调用只会执行一次
    17. *
    18. * 延时调用和定时调用实际上是可以互相代替的,在开发中可以根据自己需要去选择
    19. */
    20. var timer = setTimeout(function(){
    21. console.log(num++);
    22. },3000);
    23. //使用clearTimeout()来关闭一个延时调用
    24. clearTimeout(timer);
    25. script>
    26. head>
    27. <body>
    28. body>
    29. html>

     定时器

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>title>
    6. <style type="text/css">
    7. *{
    8. margin: 0;
    9. padding: 0;
    10. }
    11. #box1{
    12. width: 100px;
    13. height: 100px;
    14. background-color: red;
    15. position: absolute;
    16. left: 0;
    17. }
    18. style>
    19. <script type="text/javascript">
    20. window.onload = function(){
    21. //获取box1
    22. var box1 = document.getElementById("box1");
    23. //获取btn01
    24. var btn01 = document.getElementById("btn01");
    25. //定义一个变量,用来保存定时器的标识
    26. var timer;
    27. //点击按钮以后,使box1向右移动(left值增大)
    28. btn01.onclick = function(){
    29. //关闭上一个定时器
    30. clearInterval(timer);
    31. //开启一个定时器,用来执行动画效果
    32. timer = setInterval(function(){
    33. //获取box1的原来的left值
    34. var oldValue = parseInt(getStyle(box1,"left"));
    35. //在旧值的基础上增加
    36. var newValue = oldValue + 1;
    37. //判断newValue是否大于800
    38. if(newValue > 800){
    39. newValue = 800;
    40. }
    41. //将新值设置给box1
    42. box1.style.left = newValue + "px";
    43. //当元素移动到800px时,使其停止执行动画
    44. if(newValue == 800){
    45. //达到目标,关闭定时器
    46. clearInterval(timer);
    47. }
    48. },30);
    49. };
    50. };
    51. /*
    52. * 定义一个函数,用来获取指定元素的当前的样式
    53. * 参数:
    54. * obj 要获取样式的元素
    55. * name 要获取的样式名
    56. */
    57. function getStyle(obj , name){
    58. if(window.getComputedStyle){
    59. //正常浏览器的方式,具有getComputedStyle()方法
    60. return getComputedStyle(obj , null)[name];
    61. }else{
    62. //IE8的方式,没有getComputedStyle()方法
    63. return obj.currentStyle[name];
    64. }
    65. }
    66. script>
    67. head>
    68. <body>
    69. <button id="btn01">点击按钮以后box1向右移动button>
    70. <br /><br />
    71. <div id="box1">div>
    72. <div style="width: 0; height: 1000px; border-left:1px black solid; position: absolute; left: 800px;top:0;">div>
    73. body>
    74. html>

     定时器2

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>title>
    6. <style type="text/css">
    7. *{
    8. margin: 0;
    9. padding: 0;
    10. }
    11. #box1{
    12. width: 100px;
    13. height: 100px;
    14. background-color: red;
    15. position: absolute;
    16. left: 0;
    17. }
    18. style>
    19. <script type="text/javascript">
    20. window.onload = function(){
    21. //获取box1
    22. var box1 = document.getElementById("box1");
    23. //获取btn01
    24. var btn01 = document.getElementById("btn01");
    25. //获取btn02
    26. var btn02 = document.getElementById("btn02");
    27. //点击按钮以后,使box1向右移动(left值增大)
    28. btn01.onclick = function(){
    29. move(box1 , 800 , 10);
    30. };
    31. //点击按钮以后,使box1向左移动(left值减小)
    32. btn02.onclick = function(){
    33. move(box1 , 0 , 10);
    34. };
    35. };
    36. //定义一个变量,用来保存定时器的标识
    37. var timer;
    38. //尝试创建一个可以执行简单动画的函数
    39. /*
    40. * 参数:
    41. * obj:要执行动画的对象
    42. * target:执行动画的目标位置
    43. * speed:移动的速度(正数向右移动,负数向左移动)
    44. */
    45. function move(obj , target ,speed){
    46. //关闭上一个定时器
    47. clearInterval(timer);
    48. //获取元素目前的位置
    49. var current = parseInt(getStyle(obj,"left"));
    50. //判断速度的正负值
    51. //如果从0 向 800移动,则speed为正
    52. //如果从800向0移动,则speed为负
    53. if(current > target){
    54. //此时速度应为负值
    55. speed = -speed;
    56. }
    57. //开启一个定时器,用来执行动画效果
    58. timer = setInterval(function(){
    59. //获取box1的原来的left值
    60. var oldValue = parseInt(getStyle(obj,"left"));
    61. //在旧值的基础上增加
    62. var newValue = oldValue + speed;
    63. //判断newValue是否大于800
    64. //从800 向 0移动
    65. //向左移动时,需要判断newValue是否小于target
    66. //向右移动时,需要判断newValue是否大于target
    67. if((speed < 0 && newValue < target) || (speed > 0 && newValue > target)){
    68. newValue = target;
    69. }
    70. //将新值设置给box1
    71. obj.style.left = newValue + "px";
    72. //当元素移动到0px时,使其停止执行动画
    73. if(newValue == target){
    74. //达到目标,关闭定时器
    75. clearInterval(timer);
    76. }
    77. },30);
    78. }
    79. /*
    80. * 定义一个函数,用来获取指定元素的当前的样式
    81. * 参数:
    82. * obj 要获取样式的元素
    83. * name 要获取的样式名
    84. */
    85. function getStyle(obj , name){
    86. if(window.getComputedStyle){
    87. //正常浏览器的方式,具有getComputedStyle()方法
    88. return getComputedStyle(obj , null)[name];
    89. }else{
    90. //IE8的方式,没有getComputedStyle()方法
    91. return obj.currentStyle[name];
    92. }
    93. }
    94. script>
    95. head>
    96. <body>
    97. <button id="btn01">点击按钮以后box1向右移动button>
    98. <button id="btn02">点击按钮以后box1向左移动button>
    99. <br /><br />
    100. <div id="box1">div>
    101. <div style="width: 0; height: 1000px; border-left:1px black solid; position: absolute; left: 800px;top:0;">div>
    102. body>
    103. html>

     定时器3

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>title>
    6. <style type="text/css">
    7. *{
    8. margin: 0;
    9. padding: 0;
    10. }
    11. #box1{
    12. width: 100px;
    13. height: 100px;
    14. background-color: red;
    15. position: absolute;
    16. left: 0;
    17. }
    18. #box2{
    19. width: 100px;
    20. height: 100px;
    21. background-color: yellow;
    22. position: absolute;
    23. left: 0;
    24. top: 200px;
    25. }
    26. style>
    27. <script type="text/javascript" src="js/tools.js">script>
    28. <script type="text/javascript">
    29. window.onload = function(){
    30. //获取box1
    31. var box1 = document.getElementById("box1");
    32. //获取btn01
    33. var btn01 = document.getElementById("btn01");
    34. //获取btn02
    35. var btn02 = document.getElementById("btn02");
    36. //点击按钮以后,使box1向右移动(left值增大)
    37. btn01.onclick = function(){
    38. move(box1 ,"left", 800 , 20);
    39. };
    40. //点击按钮以后,使box1向左移动(left值减小)
    41. btn02.onclick = function(){
    42. move(box1 ,"left", 0 , 10);
    43. };
    44. //获取btn03
    45. var btn03 = document.getElementById("btn03");
    46. btn03.onclick = function(){
    47. move(box2 , "left",800 , 10);
    48. };
    49. //测试按钮
    50. var btn04 = document.getElementById("btn04");
    51. btn04.onclick = function(){
    52. //move(box2 ,"width", 800 , 10);
    53. //move(box2 ,"top", 800 , 10);
    54. //move(box2 ,"height", 800 , 10);
    55. move(box2 , "width" , 800 , 10 , function(){
    56. move(box2 , "height" , 400 , 10 , function(){
    57. move(box2 , "top" , 0 , 10 , function(){
    58. move(box2 , "width" , 100 , 10 , function(){
    59. });
    60. });
    61. });
    62. });
    63. };
    64. };
    65. //定义一个变量,用来保存定时器的标识
    66. /*
    67. * 目前我们的定时器的标识由全局变量timer保存,
    68. * 所有的执行正在执行的定时器都在这个变量中保存
    69. */
    70. //var timer;
    71. script>
    72. head>
    73. <body>
    74. <button id="btn01">点击按钮以后box1向右移动button>
    75. <button id="btn02">点击按钮以后box1向左移动button>
    76. <button id="btn03">点击按钮以后box2向右移动button>
    77. <button id="btn04">测试按钮button>
    78. <br /><br />
    79. <div id="box1">div>
    80. <div id="box2">div>
    81. <div style="width: 0; height: 1000px; border-left:1px black solid; position: absolute; left: 800px;top:0;">div>
    82. body>
    83. html>

    tool.js

    1. //尝试创建一个可以执行简单动画的函数
    2. /*
    3. * 参数:
    4. * obj:要执行动画的对象
    5. * attr:要执行动画的样式,比如:left top width height
    6. * target:执行动画的目标位置
    7. * speed:移动的速度(正数向右移动,负数向左移动)
    8. * callback:回调函数,这个函数将会在动画执行完毕以后执行
    9. */
    10. function move(obj, attr, target, speed, callback) {
    11. //关闭上一个定时器
    12. clearInterval(obj.timer);
    13. //获取元素目前的位置
    14. var current = parseInt(getStyle(obj, attr));
    15. //判断速度的正负值
    16. //如果从0 向 800移动,则speed为正
    17. //如果从800向0移动,则speed为负
    18. if(current > target) {
    19. //此时速度应为负值
    20. speed = -speed;
    21. }
    22. //开启一个定时器,用来执行动画效果
    23. //向执行动画的对象中添加一个timer属性,用来保存它自己的定时器的标识
    24. obj.timer = setInterval(function() {
    25. //获取box1的原来的left值
    26. var oldValue = parseInt(getStyle(obj, attr));
    27. //在旧值的基础上增加
    28. var newValue = oldValue + speed;
    29. //判断newValue是否大于800
    30. //从800 向 0移动
    31. //向左移动时,需要判断newValue是否小于target
    32. //向右移动时,需要判断newValue是否大于target
    33. if((speed < 0 && newValue < target) || (speed > 0 && newValue > target)) {
    34. newValue = target;
    35. }
    36. //将新值设置给box1
    37. obj.style[attr] = newValue + "px";
    38. //当元素移动到0px时,使其停止执行动画
    39. if(newValue == target) {
    40. //达到目标,关闭定时器
    41. clearInterval(obj.timer);
    42. //动画执行完毕,调用回调函数
    43. callback && callback();
    44. }
    45. }, 30);
    46. }
    47. /*
    48. * 定义一个函数,用来获取指定元素的当前的样式
    49. * 参数:
    50. * obj 要获取样式的元素
    51. * name 要获取的样式名
    52. */
    53. function getStyle(obj, name) {
    54. if(window.getComputedStyle) {
    55. //正常浏览器的方式,具有getComputedStyle()方法
    56. return getComputedStyle(obj, null)[name];
    57. } else {
    58. //IE8的方式,没有getComputedStyle()方法
    59. return obj.currentStyle[name];
    60. }
    61. }

     轮播图

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>title>
    6. <style type="text/css">
    7. *{
    8. margin: 0;
    9. padding: 0;
    10. }
    11. /*
    12. * 设置outer的样式
    13. */
    14. #outer{
    15. /*设置宽和高*/
    16. width: 520px;
    17. height: 333px;
    18. /*居中*/
    19. margin: 50px auto;
    20. /*设置背景颜色*/
    21. background-color: greenyellow;
    22. /*设置padding*/
    23. padding: 10px 0;
    24. /*开启相对定位*/
    25. position: relative;
    26. /*裁剪溢出的内容*/
    27. overflow: hidden;
    28. }
    29. /*设置imgList*/
    30. #imgList{
    31. /*去除项目符号*/
    32. list-style: none;
    33. /*设置ul的宽度*/
    34. /*width: 2600px;*/
    35. /*开启绝对定位*/
    36. position: absolute;
    37. /*设置偏移量*/
    38. /*
    39. * 每向左移动520px,就会显示到下一张图片
    40. */
    41. left: 0px;
    42. }
    43. /*设置图片中的li*/
    44. #imgList li{
    45. /*设置浮动*/
    46. float: left;
    47. /*设置左右外边距*/
    48. margin: 0 10px;
    49. }
    50. /*设置导航按钮*/
    51. #navDiv{
    52. /*开启绝对定位*/
    53. position: absolute;
    54. /*设置位置*/
    55. bottom: 15px;
    56. /*设置left值
    57. outer宽度 520
    58. navDiv宽度 25*5 = 125
    59. 520 - 125 = 395/2 = 197.5
    60. * */
    61. /*left: 197px;*/
    62. }
    63. #navDiv a{
    64. /*设置超链接浮动*/
    65. float: left;
    66. /*设置超链接的宽和高*/
    67. width: 15px;
    68. height: 15px;
    69. /*设置背景颜色*/
    70. background-color: red;
    71. /*设置左右外边距*/
    72. margin: 0 5px;
    73. /*设置透明*/
    74. opacity: 0.5;
    75. /*兼容IE8透明*/
    76. filter: alpha(opacity=50);
    77. }
    78. /*设置鼠标移入的效果*/
    79. #navDiv a:hover{
    80. background-color: black;
    81. }
    82. style>
    83. <script type="text/javascript" src="js/tools.js">script>
    84. <script type="text/javascript">
    85. window.onload = function(){
    86. //获取imgList
    87. var imgList = document.getElementById("imgList");
    88. //获取页面中所有的img标签
    89. var imgArr = document.getElementsByTagName("img");
    90. //设置imgList的宽度
    91. imgList.style.width = 520*imgArr.length+"px";
    92. /*设置导航按钮居中*/
    93. //获取navDiv
    94. var navDiv = document.getElementById("navDiv");
    95. //获取outer
    96. var outer = document.getElementById("outer");
    97. //设置navDiv的left值
    98. navDiv.style.left = (outer.offsetWidth - navDiv.offsetWidth)/2 + "px";
    99. //默认显示图片的索引
    100. var index = 0;
    101. //获取所有的a
    102. var allA = document.getElementsByTagName("a");
    103. //设置默认选中的效果
    104. allA[index].style.backgroundColor = "black";
    105. /*
    106. 点击超链接切换到指定的图片
    107. 点击第一个超链接,显示第一个图片
    108. 点击第二个超链接,显示第二个图片
    109. * */
    110. //为所有的超链接都绑定单击响应函数
    111. for(var i=0; ilength ; i++){
    112. //为每一个超链接都添加一个num属性
    113. allA[i].num = i;
    114. //为超链接绑定单击响应函数
    115. allA[i].onclick = function(){
    116. //获取点击超链接的索引,并将其设置为index
    117. index = this.num;
    118. //切换图片
    119. /*
    120. * 第一张 0 0
    121. * 第二张 1 -520
    122. * 第三张 2 -1040
    123. */
    124. //imgList.style.left = -520*index + "px";
    125. //设置选中的a
    126. setA();
    127. //使用move函数来切换图片
    128. move(imgList , "left" , -520*index , 20 , function(){
    129. });
    130. };
    131. }
    132. //创建一个方法用来设置选中的a
    133. function setA(){
    134. //遍历所有a,并将它们的背景颜色设置为红色
    135. for(var i=0 ; ilength ; i++){
    136. allA[i].style.backgroundColor = "";
    137. }
    138. //将选中的a设置为黑色
    139. allA[index].style.backgroundColor = "black";
    140. };
    141. };
    142. script>
    143. head>
    144. <body>
    145. <div id="outer">
    146. <ul id="imgList">
    147. <li><img src="img/1.jpg"/>li>
    148. <li><img src="img/2.jpg"/>li>
    149. <li><img src="img/3.jpg"/>li>
    150. <li><img src="img/4.jpg"/>li>
    151. <li><img src="img/5.jpg"/>li>
    152. ul>
    153. <div id="navDiv">
    154. <a href="javascript:;">a>
    155. <a href="javascript:;">a>
    156. <a href="javascript:;">a>
    157. <a href="javascript:;">a>
    158. <a href="javascript:;">a>
    159. div>
    160. div>
    161. body>
    162. html>

    完善

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>title>
    6. <style type="text/css">
    7. *{
    8. margin: 0;
    9. padding: 0;
    10. }
    11. /*
    12. * 设置outer的样式
    13. */
    14. #outer{
    15. /*设置宽和高*/
    16. width: 520px;
    17. height: 333px;
    18. /*居中*/
    19. margin: 50px auto;
    20. /*设置背景颜色*/
    21. background-color: greenyellow;
    22. /*设置padding*/
    23. padding: 10px 0;
    24. /*开启相对定位*/
    25. position: relative;
    26. /*裁剪溢出的内容*/
    27. overflow: hidden;
    28. }
    29. /*设置imgList*/
    30. #imgList{
    31. /*去除项目符号*/
    32. list-style: none;
    33. /*设置ul的宽度*/
    34. /*width: 2600px;*/
    35. /*开启绝对定位*/
    36. position: absolute;
    37. /*设置偏移量*/
    38. /*
    39. * 每向左移动520px,就会显示到下一张图片
    40. */
    41. left: 0px;
    42. }
    43. /*设置图片中的li*/
    44. #imgList li{
    45. /*设置浮动*/
    46. float: left;
    47. /*设置左右外边距*/
    48. margin: 0 10px;
    49. }
    50. /*设置导航按钮*/
    51. #navDiv{
    52. /*开启绝对定位*/
    53. position: absolute;
    54. /*设置位置*/
    55. bottom: 15px;
    56. /*设置left值
    57. outer宽度 520
    58. navDiv宽度 25*5 = 125
    59. 520 - 125 = 395/2 = 197.5
    60. * */
    61. /*left: 197px;*/
    62. }
    63. #navDiv a{
    64. /*设置超链接浮动*/
    65. float: left;
    66. /*设置超链接的宽和高*/
    67. width: 15px;
    68. height: 15px;
    69. /*设置背景颜色*/
    70. background-color: red;
    71. /*设置左右外边距*/
    72. margin: 0 5px;
    73. /*设置透明*/
    74. opacity: 0.5;
    75. /*兼容IE8透明*/
    76. filter: alpha(opacity=50);
    77. }
    78. /*设置鼠标移入的效果*/
    79. #navDiv a:hover{
    80. background-color: black;
    81. }
    82. style>
    83. <script type="text/javascript" src="js/tools.js">script>
    84. <script type="text/javascript">
    85. window.onload = function(){
    86. //获取imgList
    87. var imgList = document.getElementById("imgList");
    88. //获取页面中所有的img标签
    89. var imgArr = document.getElementsByTagName("img");
    90. //设置imgList的宽度
    91. imgList.style.width = 520*imgArr.length+"px";
    92. /*设置导航按钮居中*/
    93. //获取navDiv
    94. var navDiv = document.getElementById("navDiv");
    95. //获取outer
    96. var outer = document.getElementById("outer");
    97. //设置navDiv的left值
    98. navDiv.style.left = (outer.offsetWidth - navDiv.offsetWidth)/2 + "px";
    99. //默认显示图片的索引
    100. var index = 0;
    101. //获取所有的a
    102. var allA = document.getElementsByTagName("a");
    103. //设置默认选中的效果
    104. allA[index].style.backgroundColor = "black";
    105. /*
    106. 点击超链接切换到指定的图片
    107. 点击第一个超链接,显示第一个图片
    108. 点击第二个超链接,显示第二个图片
    109. * */
    110. //为所有的超链接都绑定单击响应函数
    111. for(var i=0; ilength ; i++){
    112. //为每一个超链接都添加一个num属性
    113. allA[i].num = i;
    114. //为超链接绑定单击响应函数
    115. allA[i].onclick = function(){
    116. //关闭自动切换的定时器
    117. clearInterval(timer);
    118. //获取点击超链接的索引,并将其设置为index
    119. index = this.num;
    120. //切换图片
    121. /*
    122. * 第一张 0 0
    123. * 第二张 1 -520
    124. * 第三张 2 -1040
    125. */
    126. //imgList.style.left = -520*index + "px";
    127. //设置选中的a
    128. setA();
    129. //使用move函数来切换图片
    130. move(imgList , "left" , -520*index , 20 , function(){
    131. //动画执行完毕,开启自动切换
    132. autoChange();
    133. });
    134. };
    135. }
    136. //开启自动切换图片
    137. autoChange();
    138. //创建一个方法用来设置选中的a
    139. function setA(){
    140. //判断当前索引是否是最后一张图片
    141. if(index >= imgArr.length - 1){
    142. //则将index设置为0
    143. index = 0;
    144. //此时显示的最后一张图片,而最后一张图片和第一张是一摸一样
    145. //通过CSS将最后一张切换成第一张
    146. imgList.style.left = 0;
    147. }
    148. //遍历所有a,并将它们的背景颜色设置为红色
    149. for(var i=0 ; ilength ; i++){
    150. allA[i].style.backgroundColor = "";
    151. }
    152. //将选中的a设置为黑色
    153. allA[index].style.backgroundColor = "black";
    154. };
    155. //定义一个自动切换的定时器的标识
    156. var timer;
    157. //创建一个函数,用来开启自动切换图片
    158. function autoChange(){
    159. //开启一个定时器,用来定时去切换图片
    160. timer = setInterval(function(){
    161. //使索引自增
    162. index++;
    163. //判断index的值
    164. index %= imgArr.length;
    165. //执行动画,切换图片
    166. move(imgList , "left" , -520*index , 20 , function(){
    167. //修改导航按钮
    168. setA();
    169. });
    170. },3000);
    171. }
    172. };
    173. script>
    174. head>
    175. <body>
    176. <div id="outer">
    177. <ul id="imgList">
    178. <li><img src="img/1.jpg"/>li>
    179. <li><img src="img/2.jpg"/>li>
    180. <li><img src="img/3.jpg"/>li>
    181. <li><img src="img/4.jpg"/>li>
    182. <li><img src="img/5.jpg"/>li>
    183. <li><img src="img/1.jpg"/>li>
    184. ul>
    185. <div id="navDiv">
    186. <a href="javascript:;">a>
    187. <a href="javascript:;">a>
    188. <a href="javascript:;">a>
    189. <a href="javascript:;">a>
    190. <a href="javascript:;">a>
    191. div>
    192. div>
    193. body>
    194. html>

     类的操作

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>title>
    6. <style type="text/css">
    7. .b1{
    8. width: 100px;
    9. height: 100px;
    10. background-color: red;
    11. }
    12. .b2{
    13. height: 300px;
    14. background-color: yellow;
    15. }
    16. style>
    17. <script type="text/javascript">
    18. window.onload = function(){
    19. //获取box
    20. var box = document.getElementById("box");
    21. //获取btn01
    22. var btn01 = document.getElementById("btn01");
    23. //为btn01绑定单击响应函数
    24. btn01.onclick = function(){
    25. //修改box的样式
    26. /*
    27. * 通过style属性来修改元素的样式,每修改一个样式,浏览器就需要重新渲染一次页面
    28. * 这样的执行的性能是比较差的,而且这种形式当我们要修改多个样式时,也不太方便
    29. */
    30. /*box.style.width = "200px";
    31. box.style.height = "200px";
    32. box.style.backgroundColor = "yellow";*/
    33. /*
    34. * 我希望一行代码,可以同时修改多个样式
    35. */
    36. //修改box的class属性
    37. /*
    38. * 我们可以通过修改元素的class属性来间接的修改样式
    39. * 这样一来,我们只需要修改一次,即可同时修改多个样式,
    40. * 浏览器只需要重新渲染页面一次,性能比较好,
    41. * 并且这种方式,可以使表现和行为进一步的分离
    42. */
    43. //box.className += " b2";
    44. //addClass(box,"b2");
    45. //alert(hasClass(box,"hello"));
    46. //removeClass(box,"b2");
    47. toggleClass(box,"b2");
    48. };
    49. };
    50. //定义一个函数,用来向一个元素中添加指定的class属性值
    51. /*
    52. * 参数:
    53. * obj 要添加class属性的元素
    54. * cn 要添加的class值
    55. *
    56. */
    57. function addClass(obj , cn){
    58. //检查obj中是否含有cn
    59. if(!hasClass(obj , cn)){
    60. obj.className += " "+cn;
    61. }
    62. }
    63. /*
    64. * 判断一个元素中是否含有指定的class属性值
    65. * 如果有该class,则返回true,没有则返回false
    66. *
    67. */
    68. function hasClass(obj , cn){
    69. //判断obj中有没有cn class
    70. //创建一个正则表达式
    71. //var reg = /\bb2\b/;
    72. var reg = new RegExp("\\b"+cn+"\\b");
    73. return reg.test(obj.className);
    74. }
    75. /*
    76. * 删除一个元素中的指定的class属性
    77. */
    78. function removeClass(obj , cn){
    79. //创建一个正则表达式
    80. var reg = new RegExp("\\b"+cn+"\\b");
    81. //删除class
    82. obj.className = obj.className.replace(reg , "");
    83. }
    84. /*
    85. * toggleClass可以用来切换一个类
    86. * 如果元素中具有该类,则删除
    87. * 如果元素中没有该类,则添加
    88. */
    89. function toggleClass(obj , cn){
    90. //判断obj中是否含有cn
    91. if(hasClass(obj , cn)){
    92. //有,则删除
    93. removeClass(obj , cn);
    94. }else{
    95. //没有,则添加
    96. addClass(obj , cn);
    97. }
    98. }
    99. script>
    100. head>
    101. <body>
    102. <button id="btn01">点击按钮以后修改box的样式button>
    103. <br /><br />
    104. <div id="box" class="b1 b2">div>
    105. body>
    106. html>

     二级菜单

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>二级菜单title>
    6. <style type="text/css">
    7. * {
    8. margin: 0;
    9. padding: 0;
    10. list-style-type: none;
    11. }
    12. a,img {
    13. border: 0;
    14. text-decoration: none;
    15. }
    16. body {
    17. font: 12px/180% Arial, Helvetica, sans-serif, "新宋体";
    18. }
    19. style>
    20. <link rel="stylesheet" type="text/css" href="css/sdmenu.css" />
    21. <script type="text/javascript" src="js/tools.js">script>
    22. <script type="text/javascript">
    23. window.onload = function(){
    24. /*
    25. * 我们的每一个菜单都是一个div
    26. * 当div具有collapsed这个类时,div就是折叠的状态
    27. * 当div没有这个类是,div就是展开的状态
    28. */
    29. /*
    30. * 点击菜单,切换菜单的显示状态
    31. */
    32. //获取所有的class为menuSpan的元素
    33. var menuSpan = document.querySelectorAll(".menuSpan");
    34. //定义一个变量,来保存当前打开的菜单
    35. var openDiv = menuSpan[0].parentNode;
    36. //为span绑定单击响应函数
    37. for(var i=0 ; ilength ; i++){
    38. menuSpan[i].onclick = function(){
    39. //this代表我当前点击的span
    40. //获取当前span的父元素
    41. var parentDiv = this.parentNode;
    42. //切换菜单的显示状态
    43. toggleMenu(parentDiv);
    44. //判断openDiv和parentDiv是否相同
    45. if(openDiv != parentDiv && !hasClass(openDiv , "collapsed")){
    46. //打开菜单以后,应该关闭之前打开的菜单
    47. //为了可以统一处理动画过渡效果,我们希望在这将addClass改为toggleClass
    48. //addClass(openDiv , "collapsed");
    49. //此处toggleClass()不需要有移除的功能
    50. //toggleClass(openDiv , "collapsed");
    51. //切换菜单的显示状态
    52. toggleMenu(openDiv);
    53. }
    54. //修改openDiv为当前打开的菜单
    55. openDiv = parentDiv;
    56. };
    57. }
    58. /*
    59. * 用来切换菜单折叠和显示状态
    60. */
    61. function toggleMenu(obj){
    62. //在切换类之前,获取元素的高度
    63. var begin = obj.offsetHeight;
    64. //切换parentDiv的显示
    65. toggleClass(obj , "collapsed");
    66. //在切换类之后获取一个高度
    67. var end = obj.offsetHeight;
    68. //console.log("begin = "+begin +" , end = "+end);
    69. //动画效果就是将高度从begin向end过渡
    70. //将元素的高度重置为begin
    71. obj.style.height = begin + "px";
    72. //执行动画,从bengin向end过渡
    73. move(obj,"height",end,10,function(){
    74. //动画执行完毕,内联样式已经没有存在的意义了,删除之
    75. obj.style.height = "";
    76. });
    77. }
    78. };
    79. script>
    80. head>
    81. <body>
    82. <div id="my_menu" class="sdmenu">
    83. <div>
    84. <span class="menuSpan">在线工具span>
    85. <a href="#">图像优化a>
    86. <a href="#">收藏夹图标生成器a>
    87. <a href="#">邮件a>
    88. <a href="#">htaccess密码a>
    89. <a href="#">梯度图像a>
    90. <a href="#">按钮生成器a>
    91. div>
    92. <div class="collapsed">
    93. <span class="menuSpan">支持我们span>
    94. <a href="#">推荐我们a>
    95. <a href="#">链接我们a>
    96. <a href="#">网络资源a>
    97. div>
    98. <div class="collapsed">
    99. <span class="menuSpan">合作伙伴span>
    100. <a href="#">JavaScript工具包a>
    101. <a href="#">CSS驱动a>
    102. <a href="#">CodingForumsa>
    103. <a href="#">CSS例子a>
    104. div>
    105. <div class="collapsed">
    106. <span class="menuSpan">测试电流span>
    107. <a href="#">Current or nota>
    108. <a href="#">Current or nota>
    109. <a href="#">Current or nota>
    110. <a href="#">Current or nota>
    111. div>
    112. div>
    113. body>
    114. html>

     JSON

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>title>
    6. <script type="text/javascript" src="js/json2.js">script>
    7. <script type="text/javascript">
    8. /*
    9. * JSON
    10. * - JS中的对象只有JS自己认识,其他的语言都不认识
    11. * - JSON就是一个特殊格式的字符串,这个字符串可以被任意的语言所识别,
    12. * 并且可以转换为任意语言中的对象,JSON在开发中主要用来数据的交互
    13. * - JSON
    14. * - JavaScript Object Notation JS对象表示法
    15. * - JSON和JS对象的格式一样,只不过JSON字符串中的属性名必须加双引号
    16. * 其他的和JS语法一致
    17. * JSON分类:
    18. * 1.对象 {}
    19. * 2.数组 []
    20. *
    21. * JSON中允许的值:
    22. * 1.字符串
    23. * 2.数值
    24. * 3.布尔值
    25. * 4.null
    26. * 5.对象
    27. * 6.数组
    28. */
    29. //创建一个对象
    30. var arr = '[1,2,3,"hello",true]';
    31. var obj2 = '{"arr":[1,2,3]}';
    32. var arr2 ='[{"name":"孙悟空","age":18,"gender":"男"},{"name":"孙悟空","age":18,"gender":"男"}]';
    33. /*
    34. * 将JSON字符串转换为JS中的对象
    35. * 在JS中,为我们提供了一个工具类,就叫JSON
    36. * 这个对象可以帮助我们将一个JSON转换为JS对象,也可以将一个JS对象转换为JSON
    37. */
    38. var json = '{"name":"孙悟空","age":18,"gender":"男"}';
    39. /*
    40. * json --> js对象
    41. * JSON.parse()
    42. * - 可以将以JSON字符串转换为js对象
    43. * - 它需要一个JSON字符串作为参数,会将该字符串转换为JS对象并返回
    44. */
    45. var o = JSON.parse(json);
    46. var o2 = JSON.parse(arr);
    47. //console.log(o.gender);
    48. //console.log(o2[1]);
    49. var obj3 = {name:"猪八戒" , age:28 , gender:"男"};
    50. /*
    51. * JS对象 ---> JSON
    52. * JSON.stringify()
    53. * - 可以将一个JS对象转换为JSON字符串
    54. * - 需要一个js对象作为参数,会返回一个JSON字符串
    55. */
    56. var str = JSON.stringify(obj3);
    57. //console.log(str);
    58. /*
    59. * JSON这个对象在IE7及以下的浏览器中不支持,所以在这些浏览器中调用时会报错
    60. */
    61. var str3 = '{"name":"孙悟空","age":18,"gender":"男"}';
    62. JSON.parse(str3);
    63. script>
    64. head>
    65. <body>
    66. body>
    67. html>

    练习

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>title>
    6. <script type="text/javascript">
    7. var str = '{"name":"孙悟空","age":18,"gender":"男"}';
    8. /*
    9. * eval()
    10. * - 这个函数可以用来执行一段字符串形式的JS代码,并将执行结果返回
    11. * - 如果使用eval()执行的字符串中含有{},它会将{}当成是代码块
    12. * 如果不希望将其当成代码块解析,则需要在字符串前后各加一个()
    13. *
    14. * - eval()这个函数的功能很强大,可以直接执行一个字符串中的js代码,
    15. * 但是在开发中尽量不要使用,首先它的执行性能比较差,然后它还具有安全隐患
    16. */
    17. var str2 = "alert('hello');";
    18. var obj = eval("("+str+")");
    19. //console.log(obj);
    20. script>
    21. head>
    22. <body>
    23. body>
    24. html>
  • 相关阅读:
    对称加密和非对称加密以及CA证书
    《Linux运维实战:创建LVM挂载到指定目录》
    redis-6.2.7 集群安装3主3从
    Linux getopt函数的使用
    WPF 控件专题 GridSplitter详解
    【问题记录】一次由filter引发的血案,如何定位上游链路的问题,问题排查与定位思路分享
    think\queue 消息队列
    4.4——数据库和前后端身份认证
    AI二次开发C#图案颜色
    LVS-DR模式
  • 原文地址:https://blog.csdn.net/Vivien_CC/article/details/125966843