美文网首页
Javascript

Javascript

作者: 慢慢来111 | 来源:发表于2017-02-18 23:28 被阅读18次

文档对象模型DOM(Document Object Model)

文档树

  • document
    • HTML
      • HEAD
        • TITLE
      • BODY
        • H1
        • P

操作docment的常用方法

  • 根据一个id获得一个对象
//获得一个对象  输出这个对象  则会得到这个id所对应的标签
$ document.getElementById('page-title') 

$ var pageTitle = document.getElementById('page-title') 
$ pageTitle
输出标签内容
  • 根据标签获得内容
//根据li标签获得一个对象,这个对象是一个数组
$ var list = document.getElementsByTagName('li')
$ list[0]
输出这个数组中的第一个元素 也就是一个li标签的内容
  • 返回找到的所有元素
//获取类名为artist-list中的li标签的元素
$ document.querySelectorAll('.artist-list li')
//输出所有的li标签
  • 返回找到的第一个元素
//获取类名为artist-list中的li标签的元素
$ document.querySelector('.artist-list li')
//输出找到的第一个li标签
  • 获得H1元素的一个属性
$ var pageTitle = document.getElementById('page-title')
//获得节点的名称
$ pageTitle.nodeName
输出H1
//输出H1标签的名称
pageTitle.innerText
输出H1的名称
//输出H1的父节点
$ pageTitle.parentNode
输出<body>....</body>
//输出H1上一个的同级标签
$ pageTitle.previousElementSibling
//输出H1的下一个同级标签
pageTitle.nextElementSibling
//输出H1的下一个同级标签的内容
pageTitle.nextElementSibling.innerText
//获得元素的子节点(子节点有很多包括元素类型的节点,文本类型的节点)
//例如 
<ul class="artist-list">
   <li>1Chris Martin</li>
   <li>2Chris Martin</li>
   <li>3Chris Martin</li>
   <li>4Chris Martin</li>
<ul>
//获得类名为artist-list的ul元素 并输出为对象
$ var artistList = document.querySelector('.artist-list');
$ artistList.childNodes
//元素类型的子节点
$ artistList.childElementCount
输出为4 因为有四个li元素
//得到第一个元素类型的子节点
$ artistList.firstElementChild
输出第一个li元素的内容
$ artistList.firstElementChild.innerText
输出第一个元素类型的子节点的内容
//替换第一个元素类型的子节点的内容
$ artistList.firstElementChild.innerText = '克里斯 马丁'
//返回最后一个元素类型的子节点
$ artistList.lastElementChild
输出最后一个元素类型的标签<li>4Chris Martin</li>

----------分割线---------

//创建元素类型的li节点
$ var newMember = document.createElement('li')
//创建一个文本类型的节点
$ var newMemberText = document.createTextNode('张三')
//把创建的这个文本节点添加到元素类型的li节点中
newMember.appendChild(newMemberText )
//把创建的这个li元素添加到文档的某一个地方
$ document.querySelector('.artist-list').appendChild(newMember)
输出<li>张三</li>

//删除刚才插入的li元素
$ document.querySelector('.artist-list').remove(newMember)

//把创建的li元素插入到指定的位置
//获得类名为artist-list的元素
$ var artistListdocument.querySelector('.artist-list')
//这个方法有两个参数,第一个参数是要放置的东西  第二个参数是元素节点的位置
$ artistList.insertBefore(newMember,artistList.firstChild)

------分割线------
//在ul元素的上面添加一个标题元素 
$ var bandMember = document.createElement('h3')
// 给这个元素设置文字
$ bandMember.innerText = '乐队成员'
//把bandMember 插到ul的上边  需要在artistList的父节点应用insertBefore的这个方法
$ artistList.parentNode.insertBefore(bandMember,artistList.previousSibling)

事件 Event

处理事件一般有三种方法 1.在元素里面使用事件的属性 2.在js中设置方法 3.绑定方法

  • 第一种方法
    <body>
        <!--
            1.当点击元素时执行 onclick="console.log('被点击了!')" 控制台输出 被点击了
            2.当鼠标在元素上时执行 onmouseover="console.log('谁在上面')"控制台输出 谁在上面
            3.当鼠标离开元素时执行 onmouseout="console.log('离开')" 控制台输出 离开
        -->
        <a href="#" class="btn" onclick="console.log('被点击了!')"
            onmouseover="console.log('谁在上面')"
            onmouseout="console.log('离开')"
            >一个链接</a>
    </body>
  • 第二种方法
//一般这个事件都写在js文件中 在脚本文件中处理逻辑
//当加载window时 触发onLoad事件时才处理以下逻辑
window.onload = function(){
    //先获取想要添加事件的元素
    var btn = document.querySelector('.btn');
    //设置处理事件的属性
    btn.onclick = function(){
        console.log('被电击了');
    }
    btn.onmouseover = function(){
        console.log('谁在上面');
    }
    btn.onmouseout = function(){
        console.log('离开');
    }
}
  • 第三种方法,给对象绑定方法时间发生时会执行相应的函数 addEventListener这个函数就是这个作用 add添加 Event事件 Listener监听者 添加事件监听者
window.onload = function(){
    //先获取想要添加事件的元素
    var btn = document.querySelector('.btn');
    //事件在发生的时候 会返回一个事件的对象 这个对象会包含好多有用的信息 时间。。。 可以在shouMessage方法中添加个参数event  这个就是事件的对象可以输出
    function showMessage(event){
    console.log(event)
}
//参数1:事件的名称 一般名称就是去掉前边的on  参数二:要调用的函数  参数3:false 点击的时候不会出发click的方法 而是出发shouMessage方法
btn.addEventListener('click',showMessage,false);
}

事件的传播

  • 给li元素设置了点击事件,但是不管点击那个image都会输出对应的alt属性的值 说明 事件的传播 是这样的先点击图片 事件上传到li标签 然后再上传到ul标签 这是冒泡的形式。另一种形式捕获的形式传播。那种形式的传播要看addEventListener这个函数的第三个参数的值 如果是false的形式 则是冒泡的形式 如果是true则是捕获的形式
    <body>
        <ul class="list-group">
            <li>第一
             ![](asd)
            </li>
            <li>第二
                ![](asd)
            </li>
            <li>第三
                ![](asd)
            </li>
            <li>第四
                ![](asd)
            </li>
        </ul>
        <script src="js/script.js"></script>
    </body>

//js文件 冒泡的形式传播  先响应li绑定的事件 再响应ul绑定的事件
var listArray = document.querySelector('.list-group');
function showMessage(event){
    console.log(event.target.alt);
}
listArray.addEventListener('click',showMessage,false);

//js文件  捕获的形式
先响应ul绑定的事件  后响应li绑定的事件

stopPropagation停止事件的传播

var listArray = document.querySelector('.list-group');
function showMessage(event){
    console.log(event.target.alt);
        event.stopPropagation();
}
listArray.addEventListener('click',showMessage,true);
addEventListener这个方法的第三个参数是true,说明是捕获形式的传播,先响应ul的方法,再显示li的方法,但是由于这个方法event.stopPropagation();,ul绑定的方法将不再执行,直接执行li绑定的方法。

相关文章

网友评论

      本文标题:Javascript

      本文链接:https://www.haomeiwen.com/subject/mkftwttx.html