JavaScript初识篇

第一章、JavaScript语法

1. 位置

  1. Html文档标签中的

2. 注释

  1. 单行注释 // 或
  2. 多行注释 /*…… */或
//这是注释
<!-- 这是注释-->
/* 这是注释
这是注释
这是注释*/
   

3. 数据类型

  1. 字符串
  2. 数值
  3. 布尔
var a="字符串";
var b=1;
var c=true;

4. 变量

  1. 全局变量 (声明在函数外部)

  2. 局部变量 (声明在函数内部)

    系统优先调用全局变量

5. 数组

//数组声明
var a=Array();
var b=Array(数组长度)var c=Array("元素1""元素2"……)var d=["元素1""元素2"……]//数组赋值
a[index]= 数值 ;

6. 对象

//对象声明与初始化
1.直接声明
 var 对象名 = {
  属性名: 数值,
  方法名: function() {},  
};
2.创建构造函数
function 对象名(参数) {
  this.属性名 = 数值;
  this.方法名 = function() {};
};
3. Object()构造函数
var 对象名 = new Object();
对象名.属性名 = 数值;
对象名.方法名 = function() {};

分类:

  1. 用户定义对象

  2. 内建对象 (库中自带的对象)

    如 Array()、Date()、Math()……

  3. 宿主对象(浏览器提供的预定义对象被称为宿主对象)

    如Form、Image、Element……通过这些对象获得关于网页上表单、图像等各种信息。

7. 操作

  1. 算数操作符 +、-、*、/……
  2. 比较操作符>、<、==……
  3. 逻辑操作符||、&&、

8. 语句

  1. 条件语句 if
  2. 循环语句 for 、while

9. 函数

//函数声明
function 函数名(参数)
{
    //函数内容
    //函数内容
    //函数内容
    return 数值; //可省略
}
//函数调用
	函数名(参数);

第二章、DOM

document、object、modle

1. 节点

DOM是由节点构成的集合。

分类:

  1. 元素节点
  2. 文本节点(文本节点总是被包含在元素节点内)
  3. 属性节点(属性节点总是被包含在元素节点内)

获取元素节点:

  1. document.getElementById(“元素id”)

    返回节点对象

  2. document.getElementByTagName(“元素名称”)

    返回节点对象数组

  3. document.getElementByClassName(" 元素类名 元素类名 元素类名……")

    返回节点对象数组

总结:

1. 一个文档是一个节点树对象,每个节点也是一个对象。

2. 可以通过组合使用3个方法获取所需的元素节点。

2. 获取和设置属性

  1. 获取属性值——getAttribute

    节点对象.getAttribute(“属性名”)

  2. 设置属性值——setAttribute

    节点对象.setAttribute(“属性名”,“属性值”)

    • 可以创建不存在的属性。

    • 不改变文档内容,只改变显示内容。这种“表里不一”的现象源自DOM的工作模式:先加载文档的静态内容,再动态刷新,动态刷新不影响文档的静态内容。这正是DOM的真正威力:对页面内容进行刷新却不需要在浏览器里刷新页面。

第三章、案例研究:JavaScript图片库

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #placeholder
        {
            width: 400px;
            height: 300px;
            
        }
        a:visited {
    color: #0000FF; /*连接访问的bai颜色变化*/
    }
    </style>
    <script>
        function showPic(img)
        {
           var source=img.getAttribute("href");
           var text=img.childNodes[0].nodeValue;
           var imgholder = document.getElementById("placeholder"); 
           imgholder.setAttribute("src",source);
           var textholder = document.getElementById("textholder"); 
           textholder.firstChild.nodeValue=text;
        }
        function count(){
        var bodyelement = document . getElementsByTagName("body")[0];
        alert(bodyelement. childNodes . length);
        }
       
       window.onload=count;

    </script>
</head>
<body>
    <h1>图片</h1>
    <ul>
        <li>
            <a href="img/wallhaven-737q1e.jpg" onclick="showPic(this);return false">1</a>
        </li>
        <li>
            <a href="img/wallhaven-dgy8gg.jpg" onclick="showPic(this);return false">2</a>
        </li>
        <li>
            <a href="img/wallhaven-dgzdpl.jpg" onclick="showPic(this);return false">3</a>
        </li>
        <li>
            <a href="img/wallhaven-eylvpo.jpg" onclick="showPic(this);return false">4</a>
        </li>
        <li>
            <a href="img/wallhaven-r2yz2j.jpg" onclick="showPic(this);return false">5</a>
        </li>
    </ul>
    <img src="img/wallhaven-wykxqp.jpg" alt="" id="placeholder">
    <p id="textholder">test
 </p>
</body>
</html>

学习内容:

  1. childNodes属性

    在一棵节点树上, childNodes属性可以用来获取任何一个元素的所有子元素,它是一个包含 这个元素全部子元素的数组。

  2. nodeType属性

    每一个节点都有nodeType属性。

    • 元素节点的nodeType属性值是1。
    • 属性节点的nodeType属性值是2。
    • 文本节点的nodeType属性值是3。
  3. nodeValue属性

    设置或获取一个节点的值,可以是任何节点,如元素节点、文本节点。元素节点的第一个子节点就是它的文本节点。

  4. firstChild和lastChild属性

    返回对象的第一个或最后一个子节点。

    等于childNodes[0]和childNodes[childNodes.length-1]

第四章、图片库改进

如何优化JavaScript代码

  1. 尽量少使用javascript伪协议,例如将herf属性设置为真实跳转地址。

  2. 将js与html分离。监测函数是否可用,然后再js实现事件监听。

  3. 通过addLoadEvent()函数初始化。

    function addLoadEvent(func) {
            var oldonload = window.onload;
            if (typeof window.onload != 'function') {
                window.onload = func;
            } 
            else {
                window.onload = function() {
                    oldonload();
                    func();
                }
            }
        }
    
  4. 使用HTML-DOM简化DOM Core代码。

    元素.setAttrinute(“src”,source)

    简化为

    var source= 元素.src

第五章、动态创建标记

本章内容

传统技术: document write和innerHTML。
深入剖析DOM方法: createElement、createTextNode、 appendChild和insertBefore。

1. 传统方法

  1. document.write()可以方便快捷的将字符串插入到文档里。

    document.write("this is new addition")
    
  2. 元素对象.innerHTML()可以向文档读取或写入大量的Html代码。

    element.innerHTML="this is new addition";
    

2. DOM方法

  1. createElement()方法

    创建一个元素节点

    document.createElement("节点名")
    
  2. appendChild()方法

    将节点插入文档节点树

    parent.appendChild(child)
    
  3. createTextNode()方法

    创建一个文本节点

    document.createTextNode("文本内容")
    
  4. insertBefore()方法,

    将个一个元素插入到现有元素之前

    //(1)新元素:你想插入的元素(newElement)。
    //(2)目标元素:你想把这个新元素插入到哪个元素(targetE7ement) 之前。
    //(3)父元素:目标元素的父元素(parentElement)。
    //下面是这个方法的调用语法:
    parentElement.insertBefore(newElement , targetElement)
    
    

3. Ajax

XMLHttpRequest对象

  1. readyState属性
    当一个XMLHttpRequest对象被创立后,readyState属性标示了当前对象处于什么状态,可以通过对该属性的访问,来判读此次请求的状态然后做出相应的操作,
    case 0 :
    未初始化状态,此时,已经创建了一个XMLHttpRequest对象,但是还没有初始化。
    Case 1:
    准备发送状态:此时,已经调用了XMLHttpRequest对象的open()方法,并且XMLHttpRequest对象已经准备好将一个请求发送到服务器。
    case 2:
    已发送状态,此时已经通过send方法把一个请求发送到服务器,等待响应。
    case 3:
    正在接收状态,此时已经接收到HTTP响应头部信息,但是消息体部分还没有完全接收到。
    case 4:
    完成响应状态,此时已经完成了HttpResponse响应的接收
  2. responseText属性
    responseText属性包含客服端接收到的HTTP响应的文本内容,当readyState属性为0、1或2时,responseText属性包含一个空字符串:当readyState属性值为3时,响应中包含客服端还没完成的响应信息;当readyState属性值卫4,responseText属性才包含完整的响应信息。3
  3. responseXML属性
    只有当readyState属性为4,并且响应头部的Content-Type的MIME类型被指定为XML(text/xml或者application/xml)时,该属性才会有值并且被解析成一个XML文档,否则该属性为null。如果是回传的XML文档结构不良或者未完成响应回传,该属性也会为null。responseXML属性用来描述被XMLHttpRequest解析后的XML文档的属性。
  4. status属性
    status属性描述了HTTP状态代码,注意,仅当readyState属性值为3(正在接受中)或者4(已加载)时,才能对此属性进行访问。如果在readyState属性值小于3时,试图去读取status属性值,将引发一个异常。
  5. statusText属性
    statusText属性描述了HTTP状态代码文本,并且仅当readyState属性为3或者4才可用。当readyState属性为其他值时试图存取statusText属性将引发一个异常。
  6. onreadystatechange事件
    每当readyState属性发生改变时,就好触发onreadystatechange事件,一般都要通过该事件来触发回传处理函数。
  7. open()方法
    XMLHttpRequest对象是通过调用open(method,uri,async,username,password)方法来进行初始化工作的。调用该方法将得到一个可以用来进行发送的对象,open有五个参数。
    //method参数是必须的,用来指定发送请求的HTTP方法(GET,POST,PUT,DELETE,HEAD)参数要大写。
    //async参数用用指定是否请求是异步的,默认是true。如果需要发送一个同步请求,需要把该参数设置为false。
    //如果需要服务器验证访问用户的情况,可以设置username和password
  8. send方法
    调用open()方法后,就可以通过调用send()方法按照open方法设定的参数将请求进行发送。当open方法中async为true,在send()方法调用后立即返回,否则将会中断直到请求返回。要注意的是,send方法必须在readyState为1时调用open方法以后才能调用。在调用send方法以后到接收响应信息知情,readyState属性的值将被设置成2.一旦接收到响应信息,readyState属性将被设为3.直到响应接收完成,readyState属性的值才会被设定为4。
    send()方法使用一个可选的参数,该参数可以包含可变类型的数据。用户可以使用它并通过POST方法把数据发送到服务器。另外可以显示的使用null参数调用sned方法,这与不用参数调用该方法一样。对于大多数其他的数据类型,在调用send方法之前,应该使用setRequestHeader()方法先设置Content-Type头部,如果send(data)方法中的data参数的类型为DOMString,那么数据将被编码成UTF-8,如果是Document类型,那么将使用由data.xmlEncoding指定的编码串行化该数据。
  9. abort()方法
    该方法可以暂停一个HttpRequest的请求发送或者HttpResponse的接收,并且将XMLHttp Request对象设置 为初始化状态。
  10. setRequestHeader()方法
    该方法用来设置请求的头部信息。当readyState属性为1时,可以调用opne方法后调用这个方法;否则将得到一个异常。setRequestHeader(header,value)方法包含两个参数,第一个是header键名称,后一个是键值。
  11. getResponseHeader方法
    此方法用于检索响应的头部值,仅能当readyState属性是3或者4(既响应头部可用以后)才可用调用该方法。否则,该方法返回一个空字符串。此外,还可以通过getAllResponse Header()方法获取所有的HttpResponse的头部信息。

代码:

//addLoadEvent声明
function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } 
    else {
        window.onload = function() {
            oldonload();
            func();
        }
    }
}
//根据浏览器不同,来获取XMLHttpRequest对象函数
function getHTTPObject()
{
    if(typeof XMLHttpRequest=="undefine")
    XMLHttpRequest=function(){
        try{return new ActiveXObject("Msxml2.XMLHTTp.6.0");}
        catch(e){}
        try{return new ActiveXObject("Msxml2.XMLHTTp.3.0");}
        catch(e){}
        try{return new ActiveXObject("Msxml2.XMLHTTp.");}
        catch(e){}
        return false;
    }
    return new XMLHttpRequest();
}
//异步刷新核心代码
function getNewContent(){
    var reqest = getHTTPObject();
    if(reqest){
        reqest.open("GET","example.txt",true);
        reqest.onreadystatechange=function(){
            if(reqest.readyState==4){
                var para = document.createElement("p");
                var txt = document.createTextNode(reqest.responseText);
                para.appendChild(txt);
                document.getElementById("new").appendChild(para);
            }
        }
        reqest.send(null);
    }
    else{
        alert("Sorry");
    }
    alert("Finish");
}

addLoadEvent(getNewContent);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值