zoukankan      html  css  js  c++  java
  • javascript基础二JavaScript DOM编程

    javascript基础二JavaScript DOM编程

    今天讲解的内容更多的是要求大家要细心。

    好,我们接着来看下JS中的字符串

    substr(startIndex,len)//从startIndex开始,截取len个字符。

                           

    一、substr

    substring(startIndex,stopIndex)//从startIndex开始,截取到stopIndex位置(不包括stopIndex所在的字符)。

     

    二、substring

    toUpperCase()//转换大写、toLowerCase();//转换小写 这个就不用讲了

    match()、replace()、search()方法,正则表达式相关(在JS Dom课程里讲)。

    接下来我们看下JS当中数组的使用:

     

    三、数组的基本写法

    需要注意的是,JS中的大小写一定要写对。否则,浏览器报错。

    本次出错是在arrVal,V没有大写。

     

    四、数组推荐写法

    当然JS中数组还有几种变态的写法,在这里列举一下,就不一一演示了。

    new Array();

    new Array(size);

    new Array(element0, element0, ..., elementn);

    var arr[‘China’,2008,true,’Hello’];(推荐。)

    在js中也有类似于C#中foreach的循环

     

    五、forin循环遍历的是数组的索引

    forin主要是用来遍历键值对数组的,forin循环其实遍历的就是键值对中的键,普通数组也可以把索引看做是键,把元素内容看做是值。

    现在我就想用forin循环遍历里面的内容,肿么办?

     

    六、通过forin循环遍历值

     

    七、forin循环可以遍历对象

     

    八、打开浏览器的错误提示功能

     

    九、快速纠错

    下面我们一起做几个数组的案例题:

    求一个整数组中的最大值。定义成函数。

    想下,这个数组有没有参数?有参数。有没有返回值呢?返回值就是我们求的结果。

     

    十、求数组中的最大值

     

    十一、竖线划分问题

     

    十二、竖线划分

     

    十三、交换字符串中的元素

    接下来我们看下js中的键值对集合

     

    十四、js中的键值对输出

     

    十五、取不到值的原因

    for循环只记普通数组的个数。

     

    十六、键值对数组通过forin来遍历输出

     

    十七、键值对集合的简写方式

     

    十八、在js里写键值对的注意事项

     

    十九、Array的简化声明

     

    二十、键值对的嵌套写法

     

    二十一、键值对的嵌套写法二

    接下来我们看下扩展方法

    大家想想C#的扩展方法都是什么?

    静态类,静态类中写几个静态方法,这些方法中必须有一个this数据类型。this后面跟什么数据类型,表示给哪个方法扩展的。

    这里所有的扩展方法就是原型 → prototype

    js本身并不是面向对象的,但是js也能实现继承,就是通过原型来实现的.

    原型又是跟作用域链相关,就实现类似于继承的东西.我们这里只给大家说下原型是什么东西就可以了.

     

    二十二、验证e-mail的方法

    但是我现在有个问题,每次验证e-mail的时候,我自己都要写个方法,非常的不爽。我们希望这样,字符串天生就带一个方法验证是不是e-mail,如果是返回true,不是的话返回false。但是现在字符串没有这个方法,需要我添加这么一个方法。

    字符串都属于string这个类型,给string添加一个方法:

     

    二十三、给原型中添加方法

    接下来我们就来看下JavaScript DOM编程

    对于之前我们介绍的JS当中的高效的好用的语法,我们以后可以经常去用。对于其中不高效也不好用的部分,我们不用花太多的精力进行研究,甚至可以不知道。

      接下来我们就学习怎么应用JavaScript DOM来操作网页上的元素,什么是dom呢?一篇网页我们就可以把它看成是一个dom。把这个网页我们模拟成根节点,子节点,属性我们就叫做一个dom。就是模拟成一个对象来进行操作。

     

    二十四、DOM模型

    在介绍之前我们先说获取页面元素的问题:

     

    二十五、整个页面就是一个window对象

     

    二十六、实现点击按钮的时候,让文本框显示一个值

     

    二十七、用document.getElementById实现对页面元素的控制

    推荐:document.getElementById(‘元素的Id’);

    为什么不让使用window.呢?接下来我们就看一下。

     

    二十八、用window的时候这样是可以的

     

    二十九、当加入一个表单的时候就报错了

     

    三十、最终推荐的写法

    接下来我们在看下dom中的绑定方法:

     

    三十一、以后推荐使用动态注册事件

     

    三十二、两种写法完全的不一样

     

    三十三、两种写法的作用域不一样

    下面我们介绍下window里面其它的常用方法:

     

    三十四、window.confirm

    写的时候window是可以省略的。

     

    window.confirm演示

     

    三十五、window.location.href

     

    setInterval演示

     

    三十六、setInterval代码

    实现每隔1秒钟text里面自动加1.

    累加之后点停就停止了。

     

    三十七、自动增加秒数和停止的代码

     

    自动增加秒数和停止的演示

    下面我们做个标题栏走马灯:

    三十八、标题栏走马灯效果

     

    标题栏走马灯效果演示

    下面我们插入一个大家在用dom编程过程中经常遇到的问题

    请看下面代码:

     

    四十、设置对应的两个值

     

    四十一、运行结果报错

    代码是从上到下依次运行的,当程序运行到script后面的内容还没有,所以页面上没有叫btn1的。所以不能设置值。

    解决办法1:

     

    四十二、解决办法1

     

    四十三、解决办法2

    好,现在我们继续说下上面的跑马灯那个练习。

     

    四十四、向左滚,向右滚代码

     

    向左滚,向右滚演示

     

    四十五、setTimeout的用法

     

    四十六、动态注册事件

    onunload(页面卸载后触发)

    onbeforeunload(页面卸载前触发)如:在我们写日志的时候,关闭页面,就会有提示,您确定要关闭页面吗?

     

    四十七、onbeforeunload代码

    我们接下来说下window的属性

     

    四十八、window.location属性

     

    四十九、window.event

                        

    鼠标移动的时候显示当前的坐标演示

    我们在窗体上按下一个按钮的时候,点击层的时候直接点是一种效果,按下ctrl键又是一种效果.按下alt键又是一种效果.这样可以提高用户的体验效果.

     

    五十、按下不同键执行不同效果的代码

     

    按下不同键执行不同效果的演示

    用到window.event在IE浏览器下支持,但这个不是标准。上面的代码在火狐下就不支持。因为火狐最标准。待会我们再去介绍不同浏览器怎么去写event对象。

    // document.title = window.event.screenX + ',' + window.event.screenY + '' + this.id;

    这是相对于屏幕的坐标。

    还有个offsetX,offsetY,offset是偏移量的意思。下面我写一段代码,大家猜一下offsetX,offsetY是什么意思?

    插一句,在我们用js编程的过程中,有的地方它不给你报错。所以,我们在纠错的时候,需要耐心。

     

    五十一、相对于当前元素的坐标

     

    相对于当前元素的坐标演示

    下面我再说下returnValue

     

    五十二、returnValue

    在火狐下FireFox preventDefault();取消事件的默认动作。

    直接写return false也可以。

    最初触发事件源的对象srcElement:

     

    五十三、srcElement.value

    button,发生事件时鼠标按键,1为左键,2为右键,4为中滑轮。

     

    五十四、button

     

    button演示

    接下来我们介绍下screen对象;获取屏幕的信息:

    当用户的电脑分辨率太低的时候,我们要用js检测一下用户的电脑的分辨率是多少。如果低于1024*768提示一下用户。

     

    检测用户的分辨率演示

     

    五十五、检测用户电脑的分辨率的代码

     

    五十六、复制网址的值,读取网址的值

     

    复制网址的值,读取网址的值演示

    clearData(“Text”)清空粘贴板。

    接下来再给大家说几个事件。

    比如有些网站,不让大家复制。

    看下我下面的复制过程,

     

    五十七、复制过程一

    打开个高级记事本,复制-粘贴。然后ctrl+B(快速浏览)。

    要是复制html带很多的html标签,不想要html标签,直接粘文字就可以了。

    所以,不要迷恋哥,哥只是传说!

    接下来咱们就看一下,这种网站是怎么不让我们复制的,为什么通过上面的方法就能复制了。

    不想让别人复制的话,就用到JS当中的几个事件。

     

    五十八、禁止复制代码

    当这种方式实现的时候,用户禁用脚本就能复制了,所以,像百度文库用flash实现的。

     

    五十九、禁止粘贴的代码

     

    禁止复制,禁止粘贴演示

    让大家复制,最后加个文章的出处。

     

    六十、允许用户复制,但是需要在最后加一个出处代码

    history操作历史记录。

    window.history.back()后退;window.history.forward()前进。

    window.history.go(-1)后退一步;window.history.go(1)前进一步。

     

    允许用户复制,但是需要在最后加一个出处演示

    接下来我们说下document属性:

    document属性是window对象中最复杂的属性。

     

    六十一、直接写write和writeln

     

    六十二、直接写write和writeln效果

     

    六十三、写在onload里面的代码

     

    六十四、写在onload里面的效果

     

    六十五、write和writeln的区别

     

    六十六、用document.write()动态创建元素会遇到一些个问题

    那么,在什么时候会用到document.write()和document.writeln()呢?

    在嵌入外部的小模块的时候会用到,假如自己做了个网页。

     

    六十七、嵌入外部小模块

    http://news.baidu.com/newscode.html网址为:在百度找到新闻的代码的网址。

     

    六十八、看下外部js文件是什么

     

    六十九、打开js文件

     

    七十、document.write动态生成div

    那么为什么要这么去实现呢?为什么不直接给我们个div代码呢?如果是div代码,网页上肯定会显示这段新闻。第二天百度想变一变,变了之后,我们还要重新拿一段代码复制到这里。如果是引入外部js的话,百度只要一概js对应document.write动态生成的div,所有的用户就都改了。非常的灵活而且非常的方便

    看起来不起眼的东西,作用还是非常的大的。

    接下来我们就说下访问页面上元素的其它方式:

     

    七十一、获取根节点下每个节点的js写法

    但是这样做太麻烦,浏览器为我们封装了三个方法。

    View Code
     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 
     3 <html xmlns="http://www.w3.org/1999/xhtml">
     4 <head>
     5     <title></title>
     6     <script type="text/javascript">
     7         window.onload = function () {
     8             //1.根据页面上的元素的name的值,获取元素
     9             var eles = document.getElementsByName('a');
    10             //2.根据标签,获取元素
    11             var eles = document.getElementsByTagName('input');
    12             //3.问题:现在要求获取所有table下的input标签。
    13             var else=document.getElementById('t1').getElementsByTagName('input');
    14             //对于元素遍历,使用for循环
    15             for (var i = 0; i < eles.length; i++) {
    16                 alert(eles[i].value);
    17             }
    18 
    19         };
    20     </script>
    21 </head>
    22 <body>
    23     <input type="button" name="a" value="btn1" id="btn1"/>
    24     <input type="text" name="name" value="txt1" />
    25     <input type="radio" name="a" value="男" />
    26     <table id="t1" border="1">
    27         <tr>
    28             <td>
    29                 <input type="button" name="name" value="按钮1" />
    30             </td>
    31             <td>
    32                 <input type="button" name="name" value="按钮2" />
    33             </td>
    34         </tr>
    35              <tr>
    36             <td>
    37                 <input type="text" name="name" value="文本框3" />
    38             </td>
    39             <td>
    40                 <input type="password" name="name" value="按钮1" />
    41             </td>
    42         </tr>
    43     </table>
    44 </body>
    45 </html>

    七十二、documnet.getElementsByName和documnet.getElementsByTagName的区别

    案例:点击一个按钮,被点击的按钮显示“呜呜”,其他按钮显示“哈哈”。

                         

    七十三、案例代码

    插入案例代码位置:

    View Code
     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 
     3 <html xmlns="http://www.w3.org/1999/xhtml">
     4 <head>
     5     <title></title>
     6     <script type="text/javascript">
     7         window.onload = function () {
     8         //1.获取页面上所有的input元素
     9             var inputEles = document.getElementsByTagName('input');
    10             //为每个按钮注册一个onclick事件
    11             for (var i = 0; i < inputEles.length; i++) {
    12             //2.找buton-按钮
    13                 if (inputEles[i].type == 'button') {
    14                     //3.为每个按钮注册一个单击事件
    15                     inputEles[i].onclick = function () {
    16                         //5.将所有按钮初始化为笑
    17                         //再获取所有的按钮
    18                         var inputsObj = document.getElementsByTagName('input');
    19                        for (var j = 0; j < inputsObj.length; j++) { 
    20                             if (inputsObj[j].type=='button') {
    21                                 inputsObj[j].value = '哈哈';
    22                             }
    23                         }
    24                         //4.设置当前被点击的按钮为呜呜
    25                         this.value = '呜呜';
    26                     };
    27                 }
    28             }
    29         };
    30     </script>
    31 </head>
    32 <body>
    33     <input type="button" name="name" value="哈哈" />
    34     <input type="button" name="name" value="哈哈" />
    35     <input type="text" name="name" value="哈哈" />
    36     <input type="text" name="name" value="哈哈" />
    37     <input type="radio" name="name" value="哈哈" />
    38     <input type="checkbox" name="name" value="哈哈"/>
    39     <input type="button" name="name" value="哈哈" />
    40     <input type="button" name="name" value="哈哈" />
    41     <input type="button" name="name" value="哈哈" />
    42     <input type="button" name="name" value="哈哈" />
    43     <input type="button" name="name" value="哈哈" />
    44     <input type="button" name="name" value="哈哈" />
    45     <input type="button" name="name" value="哈哈" />
    46     <input type="button" name="name" value="哈哈" />
    47     <input type="button" name="name" value="哈哈" />
    48     <input type="button" name="name" value="哈哈" />
    49     <input type="button" name="name" value="哈哈" />
    50     <input type="button" name="name" value="哈哈" />
    51 </body>
    52 </html>

    七十四、案例1演示

    课后练习:

    案例:十秒钟后协议文本框下的注册按钮才能点击,时钟倒数。(btn.disabled = “” ,让元素可用。disabled=disabled,为不可用)disabled=true;(用到计时器控件)

    练习:加法计算器。两个文本框中输入数字,点击【=】按钮将相加的结果放到第三个文本框中。

     

    七十五、练习图解

    练习:美女时钟。

     

    七十六、这么获取时分秒

    作者近期文章列表:

    C#中级进阶教程(完全免费,献给代码爱好者的最好礼物。注:本作者分享自己精心整理的C#中级进阶教程,无任何商业目的。
    希望与更多的代码爱好者交流心得,也请高手多多指点!!!)
    三层及其它内容 递归
    三层(一)
    三层相关案例(及常见的错误)
    三层实例(内涵Sql CRUD)
    手写代码生成器
    SQL数据库 ADO.net 数据库的应用图解一
    数据库的应用详解二
    ADO.NET(内涵效率问题)
    ADO.NET实例教学一
    ADO.NET(内含存储过程讲解)
    面向过程,面向对象中高级 面向过程,面向对象的深入理解一
    面向过程,面向对象的深入理解二
    面向对象的深入理解三
    无处不在的XML
    winform基础 Winform基础
    winform中常用的控件
    面向过程 三种循环的比较
    C#中的方法(上)
    我们常见的数组
    面向对象 思想的转变
    C#中超级好用的类
    C#中析构函数和命名空间的妙用
    C#中超级好用的字符串
    C#中如何快速处理字符串
    值类型和引用类型及其它
    ArrayList和HashTable妙用一
    ArrayList和HashTable妙用二
    文件管理File类
    多态
    C#中其它一些问题的小节
    GDI+ 这些年我收集的GDI+代码
    这些年我收集的GDI+代码2
    HTML概述以及CSS 你不能忽视的HTML语言
    你不能忽视的HTML语言2精编篇
    你不能忽视的HTML语言3
    CSS基本相关内容--中秋特别奉献
    CSS基本相关内容2
    JavaScript基础 JavaScript基础一
    jQuery jQuery(内涵: jquery选择器)
  • 相关阅读:
    USACO Grass Planting
    洛谷 P3178 [HAOI2015]树上操作
    史上最全NOIP初赛知识点
    史上最全的CSP-J/S 第一轮知识点
    洛谷 P1886 滑动窗口
    背包九讲—简单背包
    NOIP 2005 采药
    洛谷 P2357 守墓人
    NOI 2015 软件包管理器
    洛谷 P3384 【模板】树链剖分
  • 原文地址:https://www.cnblogs.com/zysbk/p/2812411.html
Copyright © 2011-2022 走看看