DOM&BOM学习

day01

学习目标

对DOM树进行增删改查

    在html文件中的任何文档内容都是节点(Node类型节点)。
        
        文档节点(全篇就一个)   document节点
        元素节点              element节点
        文本节点              text节点
        注释节点...              

        元素节点内,属性节点


    Node
    |           |           |
    Document    Dlement     Text


DOM: 找到节点  修改节点  删除节点  添加节点

** 1.Node类型**

DOM1级定义为一个Node接口,该接口将由DOM中的所有节点类型实现。除了IE之外,在其他所有浏览器中都可以访问到这个类型。javascript中所有的节点类型都继承自Node类型,所有节点类型都共享着相同的基本属性和方法。

2.节点关系
    属性:
    nodeType	表示节点类型	
                Document--> 9;Element -->1;TextNode -->3;Comment--> 8
                document 是Document构造函数的实例
                document.body是Element构造函数的实例
                document.body.firstChild 是TextNode构造函数的实例
    nodeName    该属性取决于节点类型,如果是元素类型,值为元素的标签名
    nodeValue   该属性取决于节点类型,如果是元素类型,值有null
    childNodes	
            保存一个NodeList对象,NodeList是一种类数组对象用来保存一组有序的节点,NodeList是基于DOM结构动态执行查询的结果,DOM结构变化可以自动反应到NodeList对象中。访问时可以通过中括号访问,也可以通过item()方法访问。可以使用slice方法将NodeList转换为数组
            var arr = Array.prototype.slice.call(nodes,0);
    parentNode
            指向文档树中的父节点。包含在childNodes列表中所有的节点都具有相同的父节点,每个节点之间都是同胞/兄弟节点。
    previousSibling	兄弟节点中的前一个节点
    nextSibling		兄弟节点中的下一个节点
    firstChild		childNodes列表中的第一个节点
    lastChild		childNodes列表中的最后一个节点
    ownerDocument		
        指向表示整个文档的文档节点。任何节点都属于它所在的文档,任何节点都不能同时存在于两个或更多个文档中。

    方法:
    hasChildNodes()	
        在包含一个或多个子节点的情况下返回true

2.操作节点
    以下四个方法都需要父节点对象进行调用!
    appendChild()
        向childNodes列表末尾添加一个节点。返回新增的节点。关系更新如果参数节点已经为文档的一部分,位置更新而不插入,dom树可以看做是由一系列的指针连接起来的,任何DOM节点不能同时出现在文档中的多个位置 	
    insertBefore()  //第一个参数:要插入的节点;第二个参数:作为参照的节点;
        被插入的节点会变成参照节点的前一个同胞节点,同时被方法返回。如果第二个参数为null将会将该节点追加在NodeList后面
    replaceChild()  //第一个参数:要插入的节点;第二个参数:要替换的节点;
        要替换的节点将由这个方法返回并从文档树中被移除,同时由要插入的节点占据其位置
    removeChild() //一个参数,即要移除的节点。
        移除的节点将作为方法的返回值。其他方法,任何节点对象都可以调用。

    元素内容
        innerHTML  		返回元素内容,包括html标签
        innerText    		元素内部的文本,去除回车和换行
        textContent  		元素内部的文本,不去除空格和回车

    清空parent内部的内容
        parent.innerHTML = ``;

3.克隆:
    浅复制:只复制节点本身,不复制内部内容
    var cloneOne = one.cloneNode();

    深复制,复制节点本身和内部字节点
    var cloneOne = one.cloneNode(true);

2.document类型

1.文档子节点
    可以继承Node中所有的属性和方法
    属性:
    documentElement	始终指向HTML页面中的<html>元素。
    body		直接指向<body>元素
    doctype		访问<!DOCTYPE>, 浏览器支持不一致,很少使用
    title		获取文档的标题
    URL			取得完整的URL
    domain		取得域名,并且可以进行设置,在跨域访问中经常会用到。服务器测
    referrer	取得链接到当前页面的那个页面的URL,即来源页面的URL。
    images		获取所有的img对象,返回HTMLCollection类数组对象
    forms		获取所有的form对象,返回HTMLCollection类数组对象
    links	    获取文档中所有带href属性的<a>元素

2.查找元素
    getElementById()  
        参数为要取得元素的ID,如果找到返回该元素,否则返回null。如果页面中多个元素的ID值相同,只返回文档中第一次出现的元素。如果某个表单元素的name值等于指定的ID,该元素也会被匹配。
    getElementsByTagName()
        参数为要取得元素的标签名,返回包含另个或者多个元素的NodeList,在HTML文档中该方法返回的是HTMLCollection对象,与NodeList非常类似。可以通过[index/name],item(),namedItem(name)访问
    getElementsByName() 
        参数为元素的name,返回符合条件的NodeList
    getElementsByClassName() 
        参数为一个字符串,可以由多个空格隔开的标识符组成。当元素的class属性值包含所有指定的标识符时才匹配。HTML元素的class属性值是一个以空格隔开的列表,可以为空或包含多个标识符。

3.Element类型

找

修改内部内容、获取内部内容
    (innerHTML\innerText\textContent)

删除 
    removeChild()

添加元素 
    appendChild()
    insertBefore()

创建元素
    document.creatElement('div');

属性操作 !!!
    获取到属性值
        <div id="one" class="two" title="hello"></div>
            div.id
            div.className
            div.title
            div.getAttribute('id')
    修改某一属性值
            div.id = 'day';
            div.title = '';
            div.setAttribute('id','day');

        //获取style属性值和onclick属性值(两种方法的区别)
            //.style .onclick 拿到的对象或函数
            console.log(div.style);            
            console.log(div.onclick);

            //getAttribute 拿到的是字符串
            console.log(div.getAttribute('style'));
            console.log(div.getAttribute('onclick'));

4.文本

div.innerText.length
div.innerText = div.innerText + 'hello';

5.作业

遍历数据,拿到一个对象,生成一个tr,tr中的td中的内容使用对象中的属性值。
最后追加到tbody中。
var students = [{
    name:'zhangsan',
    age:1,
    gender:'男'
},{
    name:'zhangsan',
    age:1,
    gender:'男'
},{
    name:'zhangsan',
    age:1,
    gender:'男'
}]
遍历到表格中

//将类数组转换成数组(两种方法)!!!

1.var arr = Array.prototype.slice.call(childs,0);

2.var arr = Array.from(childs);【推荐es6】

//实现从孩子节点中过滤出元素节点

var res = arr.filter(function (item) {
    return item.nodeType == 1;
});
console.log(res);       //Array [ div#one.two ]

//获取某一元素节点内的元素孩子节点

console.log(body.children);     //HTMLCollection { 0: div#one.two, length: 1, … }

输出:

console.info(newChild);      //<div>    黑色i图标
console.debug(newChild);      //<div>
console.error(newChild);      //<div>    红色i图标
console.warn(newChild);      //<div>     黄色i图标

day02

事件:

三要素:
    事件目标
    事件处理程序
    事件对象

事件流
    事件冒泡(IE事件流)
        从内往外
    事件捕获
        从外往内
    DOM事件流
        先事件捕获=》目标元素执行事件处理程序=》事件冒泡

绑定事件
    HTML绑定事件
        <div onclick="tets(event,...)"></div>

    DOM0级绑定事件
        var div = document.getElementById('one');
        div.onclick = function(event){
            //可以使用event事件对象
        }
        //覆盖
        div.onclick = function(){}
        //解绑
        div.onclick = null;

    DOM2级绑定事件
        非IE8及以下:
        div.addEventListener('click',handle); 
            第三个参数,默认是false,是在冒泡阶段执行
                true:在捕获阶段执行
        div.addEventListener('click',handle2); 累加执行
        //解绑
        div.removeEventListener('click',handle);

        function handle2(event){
            console.log(event);
        }

事件对象
    event
    属性:
        event.target 触发事件的源头元素
        event.currentTarget 当前正在执行事件处理程序的元素,与this一样
        event.stopPropagation() 停止冒泡
            event.cancelBubble = true
        event.preventDafault() 阻止默认行为 
            event.returnValue = false

事件代理
    父元素代理子元素的事情
    parent.onclick = function(event){
        //event.target是哪个孩子
        if(A孩子){
            A孩子事情
        }
        if(B孩子){
            B孩子事情
        }
        ...
        if(parent){
            parent事情
        }
    }

day03

超时调用:超过多少时间执行一次代码,该代码仅执行一次

setTimeout(function(){
  console.log(1);
},1000)

间歇调用:每隔多少毫秒执行一次代码,代码重复执行

setInterval(function(){
  console.log(1);
},1000)

查询字符串

?name=zhangsan&age=12

部署项目

1.将jar包上传到/jar   路径:/var/www/html/jarbao
2.navicat中的远程连接中,创建university数据库,编码utf-8。给briup用户授权university数据库的一切权限。
云服务器的mysql软件登录名briup,密码briup
在university数据库导入.sql文件运行。
3.启动jar包
ssh连上云服务器,nohup java -jar /jar/univer...jar  
  7788端口号
如果想修改端口号启动jar包
  nohup java -jar xxx.jar --server.port=8800 
阿里云安全组开放7788端口,或者其他指定端口
4.访问后台接口
http://ip:7788/swagger-ui.html
先登录再认证,再访问接口
5.修改university-ui.zip解压后的static->js->app.c3...js中的127.0.0.1为自己的云服务器ip地址
6.将university-ui.zip解压后的文件部署到云服务器的apache下。
在浏览器访问项目
http://ip:80/university

http协议

浏览器和服务器之间遵循http协议,浏览器发送请求报文,服务器给出响应报文
请求报文:请求头,请求体(浏览器决定,js决定)
响应报文:响应头,响应体(服务器决定,java决定)

Ajax 前端传递数据给后台

  get方式:url后的查询字符串
  默认get方式传递数据,数据格式是表单数据格式 application/x-www-form-urlencoded
post方式:参数在请求体里
  如果post传递参数格式是表单格式
    需要设置 application/x-www-form-urlencoded,还需要将js对象转为表单格式数据(qs)
      qs.stringify(obj)
  如果post传递参数格式是json格式
    需要设置 application/json,还需要将js对象转为json字符串传递(JSON)
      JSON.stringify(obj)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值