• 【笔记】——Javascript(1)


    一.JavaScript简介

    JavaScript的组成:ECMAScript、DOM、BOM

    ECMAScript

    1)它定义了脚本语言的所有属性、方法和对象。

    2)JavaScript/ActionScript/ScriptEase等其他语言通过实现ECMAScript作为其功能的基准。

    DOM

    1)每个浏览器都有其自身ECMAScript接口的实现,这些ECMAScript接口被扩展成DOM、BOM等。

    2)根据W3C的DOM规范,DOM接口与浏览器、平台、语言无关,故用户可以访问页面的其他标准组件。其解决了访问站点中的数据、脚本和表现层对象时,一些浏览器和系统的冲突。

    3)DOM把整个网页规划成,由节点层级构成的文档。

    BOM

    1)常见功能:弹出/移动/关闭/调整 浏览窗口;提供Web浏览器相关信息的导航对象;提供页面详细信息的定位对象;提供屏幕分辨率参数的屏幕对象;支持cookie;不同浏览器自身的新特性(如IE的ActiveX类)...

     

    二、Web标准

    ——Web标准概述

    1)Web标准为一系列标准的集合。

        网页分为结构Structure、表现presentation、行为Behavior。

     

    三、JavaScript基础

    ——JavaScript语法

    1)  区分大小写。

    2)  若类型变量。

    3)  行尾的分号可有可无。

    4)  括号用于代码块。

    5)  注释方式同于C和Java。

    ——变量

    1)可不用声明或用var(variable)关键字声明变量。可同时声明多个。

    2)名称规则:①首字符可为字母/下划线/美元符,其后还可有数字。

                 ②变量名不能为关键字和保留字。

                 ③3种标记规则:Camel/Pascal/匈牙利标记法

    ——9种数据类型

    String、Number、Boolean、Object、Undefined、Null

    和3种在JS运行时中间结果的数据类型Reference、List、Completion

    1)字符串

    ①获取字符串 个数:length属性。【双字符算一个字符】

    ②获取 指定位置的字符:charAt()方法

    ③获取 子字符串:slice()、substring()、substr()

        slice()和substring()都接受两个参数,指起始位置和终止位置,不包含终止字符。可忽略第二个参数。

            区别在于负数参数:前者负数从末端计数。后者负数归0,较小数为始,较大数为终。

        substr()的首参数为起始位置,次参数为长度。

    ④搜索 子字符:indexOf()、lastIndexOf()

        indexOf()往前搜。lastIndexOf()往后搜。返回指定字符的位置,找不到则返回-1。

            可设置第2参数指定开始搜索位置。位置都是从前面的0下标开始。

    2)数值

    ①var num = 7e5; //其中“7e5”表示“700000”。

    ②toExponential()用于将数值 转换为 科学计数法。参数表小数位数。

    3)布尔型

    只有true和false两个值。

        typeof()返回变量的类型。

    4)类型转换

    ①转换为 字符串型:toString()参数可指定要转换成的进制数

    ②转换为数字型:parseInt()转换为整数。parseFloat()转换为浮点数。都从0位置开始,检查到非数值时结束。参数可指定要转换成的进制数。

    字符串型、数字型、布尔型都属于离散型。离散的变量只能存储一个值,存储一组值的变量需使用数值array。

    5)数组

    ①由相同名称的多个值构成的集合。

    ②由Array关键字声明,可同时制定个数/长度length:var aTeam = new Array(12): //长度可容12个元素

                          直接用参数创建元素:var aMap = new Array(“China”,“USA”,“Britain”):

    ③由方括号[]声明:var aMap = [“China”,“USA”,“Britain”]:

    ④数组 转换为 字符串:toString()。

    ⑤指定数组的 连接符:join()参数为连接数组项的字符串。无参数等同toString();空字符串表不用连接符;

    ⑥字符串 转换为 数组:split()参数为分隔字符串的标识。

    ⑦使数组元素 反序:reverse()【字符串没有类型方法,但可通过split()转换为数组反序后用join()转回字符串】

    ⑧使数组元素 按字母排序:sort()

    ——函数

    1)arguments对象:可访问函数的参数【通过下标】。

                       function aFunc(){if(arguments[0]==“aWord”){do something}:}

        函数参数个数:arguments.length

    2)ECMAScript不会检验传递给函数的参数个数是否超过函数定义的。【Netscape文档表面最多26个】任何遗漏的参数都以undefined形式传给函数,多余的参数回被自动忽略。

    ——其他对象

    1)对象是自我包含的数据集合。访问对象数据2种方式:属性和方法。【属性是对象中的变量,方法则是函数】

        创建对象:new关键字。var myCar = new Car();

    2)Date对象

    ①ECMAScript把日期存储为距离UTC时间1970年1月1日0点的毫秒数。【协调世界时UTC由原子钟提供】

    ②计算 程序运行速度:在程序始末各创建一个时间对象,通过第二个时间对象减去前面的,得出运行时间。

    ③参数 初始化时间对象:

        new Date(“month dd,yyyy hh:mm:ss”);

        new Date(“month dd,yyyy”);

        new Date(yyyy,mth,dd,hh,mm,ss);

        new Date(yyyy,mth,dd);

        new Date(ms);

        yyyy:4位数年份。   month:英文月份。   mth:月份0-11。   dd:日数1-31。

        hh:小时数0-23。    mm:分针数0-59。    ss秒数。          ms:毫秒数。

    ※ new Date()在不同浏览器中显示格式不同。【即输出的字符串不同】

    ④获取时间:

        aDate.getFullYear()     四位数年份。

        aDate.getYear()         不同浏览器,返回两位或四位数年份【不推荐】

        aDate.getMonth()        月份0-11

        aDate.getDate()         日期1-31

        aDate.getDay()          星期0日-6六

        aDate.getHours()        小时数0-23

        aDate.getMinutes()      分钟数0-59

        aDate.getSeconds()      秒数0-59

        aDate.getMilliseconds() 毫秒数0-999

        aDate.getTime()         返回从GMT时间1970年1月1日0点0分0秒至aDate的毫秒数

    ⑤设置时间:aDate.setFullYear...()

    ——数学计算:Math对象

    1)常用属性:   Math.E:e自然对数的底      Math.PI:π圆周率      Math.SQRT2:2的平方根

    2)最值:min()、max()返回一组数的最小/大值。

    3)小数 转换 整数:ceil()向上取整、floor()向下取整、round()四舍五入

    4)生成随机数:random()  返回0和1中间的随机数,不包含0和1。

        返回1-100中的随机数:var aNum = Math.floor(Math.random()*100+1);【包含1和100】

        返回2-99中的随机数:var aNum = Math.floor(Math.random()*99+2);【包含1和100】

    ※通常将随机选择打包成一个函数,需要时再调用

    function selectFrom(firstVal,lastVal){

        var sum = lastVal–firstVal + 1;

        return Math.floor(Math.random()*sum + firstVal);}

    5)Math的其他方法:Math.abs(x)返回x的绝对值....

    ——BOM基础

    JS提供一些对象用于与浏览器窗口的交互。

    这些对象包括:window、document、location、navigator、screen等。统称为BOM。

    1)window对象

    表示整个浏览器窗口。

    ①4个常用方法:moveBy(dx,dy)  向右移动dx像素,向下移动dy像素。

                    moveTo(x,y)   移动到相对用户屏幕的(x,y)处。

                    resizeBy(dw,dh)相对当前,宽度增加dw像素,长度增加dh像素。【负数为缩小】

                    resizeTo(w,h)  宽度调整为w像素,高度调整为h像素。【不能用负数】

    ②打开新窗口:open()

    四个参数:冒号包围,逗号分隔。

        1新窗口url

        2新窗口名称【_blank/_self/_parent/_top/框架名】【与a元素的target属性相同】

        3新窗口是否替换当前页面的布尔值

        4特性字符串说明:left、top:新窗口坐标。          width、height:新窗口宽高。

                         resicable:是否可拖动调整大小。  scrollable:是否使用滚动条。【默认no】

                         toolbar、status、location:【默认no】是否显示工具栏、状态栏、地址栏。

    ③关闭窗口:close()

    ④弹出信息:alert()   单向对话框。一个确定按钮。

                confirm() 返回一个布尔值。一个确定按钮和一个取消按钮。

                prompt()  返回一个字符串。两个参数:脚本提示、默认值。

    ⑤window的history属性:尽管无法获取历史页面的URL,但通过history属性可访问历史页面。

        使浏览器后退一页:window.history.go(-1);等同于window.history.back();

        使浏览器前进一页:window.history.go(1); 等同于window.history.forward();

    2)document对象

    为window的一个属性,故可访问window的所有属性和方法。即window.document == document为true。

    ①原本用于处理页面文档的功能被CSS和DOM取代,故现在主要用于读写一些网页属性/属性集合。

            如,读写URL。导航到新窗口【在FF不通用】:document.URL=“http://xxx.com/y”;

    ②常用属性:anchors 网页中锚的集合。 由<a name=”anchorsName”>标记

              applets   applet集合。

              embeds    嵌入对象的集合。 由<embed>标记

              forms     表单的集合。

              images    图片的集合。

              links     超链接的集合。   由<a href=“URL”>标记

    e.g:var myLinks = document.links;

         myLinks[2].target = “_blank”;

    ③向浏览器直接插入HTML流:write()

        除非置于在<script>的顶层,否则使用事件句柄调用函数中的document.write()方法时,插入的内容会以覆盖当前页面的形式出现。

    3)location对象

    表示载入窗口的URL。用于分析和设置网页URL。window对象和document对象的属性。

    ①常用属性:hash:若URL包含书签#,返回该符号后面的内容。

                search:执行GET请求的URL中间号(?)后的部分。

                href:当前载入的完整URL。

                host:服务器名称。

                pathname:URL中主机名后的部分。

                protocol:URL使用的协议。

                port:URL周明华请求的端口号。

    ②location.href属性与document.URL属性相似,皆可导航到新页面。前者对各浏览器的兼容性更好。

        采用此方法导航,新地址会被加入到浏览器的历史栈中,前个页面之后,即可通过“后退”访问之前的页面。对于像安全级别较高的银行系统 不希望用户通过“后退”返回,可以用location.replace()方法代替。

    ③重新加载页面:reload() 接受一个布尔值参数。true则从服务器上重载,false则从缓存上重载。

    4)navigator对象

    包含系列浏览器信息的属性。可用于浏览器检测。

    ①浏览器信息查询:userAgent属性

    5)screen对象

    用户的屏幕信息。window对象的属性。

    属性:width/height:屏幕宽高。

            availWidth/availHeight:窗口可使用的屏幕宽高。【[ə'veɪl]有用】

            colorDepth:用户表示颜色的位数。

    ※全屏:window.moveTo(0,0);

            window.resizaTo(window.availWidth,window.availHeight);

     

    四、CSS进阶

    传统HTML缺点:维护困难、标记不足、网页过胖、定位困难...

    ——<div>与<span>

    1)<div>division块级元素block-level element。

    2)<span>行内元素inline element。

        故,<div>标签可包含<span>元素,反之则不行。

    ——元素定位

    1)float定位:在父级的content区域浮动。

    2)position定位:4个值static/absolute/relative/fixed

            配合position定位的属性:top/right/bottom/left

    3)z-index空间位置:调整position定位时 重叠块的上下位置。同值时按原有高低覆盖关系。

    五、DOM模型

    定义了用户操作文档对象的接口。使开发者能将HTML作为XML文档来处理。

    ——网页DOM模型框架

    DOM完成了 通过树状图的这种划分关系,使整个HTML文档结构清晰可见,各个元素之间的关系很容易表达出来。

    ——DOM模型中的节点

    在DOM中有3种节点:元素/文本/属性 节点。

    1)元素节点(element node)

        可以说正个DOM模型都是由元素节点构成的。标签p/li/h1等为元素节点的名称。

        根元素为html。

    2)文本节点(text node)

        文本节点被包含在元素节点内部。

    3)属性节点(attribute node)

        几乎所有元素都有title属性用于描述。

    ——使用DOM

     

    1)访问节点

    ①getElementByTagName()

    返回相同标签名的元素的NodeList

    文档的 DOM结构 必须在文档加载完后 才能分析出来。故以上语句需在页面加载后才能生效。

    ②getElementById()

    返回指定id的元素。

    ※IE-Bug:当某元素的id值 与其前面某元素的name值相同时,此方法对name值元素作用有效,对id值元素无效。

        解决:最好的办法是避免id和name值相同。

    2)检测节点类型

    ①通过nodeType属性克检测出节点类型。

        返回一个(代表节点类型的)整数值。有12个可取值。【document.nodeType返回9】

        元素节点返回1、属性节点返回2、文本节点返回3【故,可对某种类型的节点做单独处理,常用于搜索节点】

    3)利用父子兄关系 查找节点

    父子兄:DOM模型中节点之间最重要的3种关系。

    ①通过父子关系 获取某节点的所有子节点:hasChildNodes()和childNodes属性

        判断是否有子节点:if(hasChildNodes()){dosomething}

        使用childNodes属性 可遍历所有子节点名 和显示出来。

    ※IE7-Bug:再IE7中显示出所有子节点名;在FF显示出所有节点名外,之间的空格也会被当成子节点计算出来。

    ②反过来也可通过某节点 获取其所有父节点:parentNode属性。

        最近的父节点:var p = aNode.parentNode.lastChild;

    ③通过兄弟关系 读写同一层次的节点:previousSibling属性、nextSibling属性【因①中bug,故仅适用于IE】

    解决兼容性:用while循环进行nodeType判断 过滤掉“nodeType不为1或null”的值。

    4)设置节点属性

    ①getAttribute(“属性名”)只能通过一个元素节点对象调用!不能用document对象调用。

    ②setAttribute(“属性名”,“属性值”)

    5)创建和添加节点

    ①创建元素节点:createElement(“元素名”)

    ②创建文本节点:createTextNode(“文本”)

        【为元素节点添加-文本节点,即添加子节点:eleVar.appendChild(texVar)/该方法添加的位置,位于childNode位于列表尾部】

    ③创建文档碎片节点:createDocumentFragment()

    6)在特定节点前 插入节点

    通过父节点的insertBefore()方法:同replaceChild()有两个参数。

    7)在特定节点后 插入节点

    没有直接方法,可自行编码:判断若为最后一个节点,则用appendChild()添加到末尾;否则添加到下一个兄弟节点的前面insertBefore()。

    8)删除节点

    通过父节点的removeChild()方法:oP.parentNode.removeChild(oP)

    9)替换节点

    通过父节点的replaceChild()方法:olP.parentNode.removeChild(newP,oldP)

    ====================================================================

    【笔记】——Javascript(2)

  • 相关阅读:
    xen虚拟机管理命令
    ipmi
    http://classworlds.codehaus.org/apiusage.html
    maven编译问题之 -The POM for XXX is invalid, transitive dependencies (if any) will not be available
    SSM项目web.xml等配置文件中如何查找类的全路径名?
    shiro安全框架学习-1
    ht-8 对arrayList中的自定义对象排序( Collections.sort(List<T> list, Comparator<? super T> c))
    ht-7 treeSet特性
    ht-6 hashSet特性
    ht-5 treemap特性
  • 原文地址:https://www.cnblogs.com/slowsoul/p/2881938.html
Copyright © 2020-2023  润新知