web前端第七篇js的dom对象一

呆萌小河马的博客      2022-02-17     240

关键词:

一、什么是HTML  DOM

  •  HTML  Document Object Model(文档对象模型)
  •     HTML DOM 定义了访问和操作HTML文档的标准方法
  •     HTML DOM 把 HTML 文档呈现为带有元素、属性和文本的树结构(节点树)

二、DOM树

 画dom树是为了展示文档中各个对象之间的关系,用于对象的导航。

三、DOM节点

1.节点类型

HTML 文档中的每个成分都是一个节点。

DOM 是这样规定的:
    整个文档是一个文档节点 
    每个 HTML 标签是一个元素节点 
    包含在 HTML 元素中的文本是文本节点 
    每一个 HTML 属性是一个属性节点

其中,document与element节点是重点。

2.节点关系

 

节点树中的节点彼此拥有层级关系。
父(parent),子(child)和同胞(sibling)等术语用于描述这些关系。父节点拥有子节点。同级的子节点被称为同胞(兄弟或姐妹)。

 

    •     在节点树中,顶端节点被称为根(root)
    •     每个节点都有父节点、除了根(它没有父节点)
    •     一个节点可拥有任意数量的孩子
    •     同胞是拥有相同父节点的节点

下面的图片展示了节点树的一部分,以及节点之间的关系:

3.节点查找

有两种方式:

  方式一:直接查找节点(这是一个查找方法)

//     节点查找(节点也就是一个个的标签)
        document.getElementById('idname');//按照id查找,拿到的是一个标签对象
        document.getElementsByClassName('classname');//按照class标签去找,得到的是一个数组里存放的标签
        document.getElementsByTagName('tagname');//通过标签名去找,拿到的也是一个数组
        var a = document.getElementsByName('yuan'); //按照name属性去找,拿到的也是一个数组
        console.log(a);
//length属性
// /    ==2.========================
    var ele = document.getElementById('div1');
    console.log(ele.length);//返回undified

    var ele2 = document.getElementById('div3');
    console.log(ele2.length);//返回undified

    var ele3 = document.getElementsByClassName('div2');
    console.log(ele3.length); //返回1

    var ele4 = document.getElementsByTagName('p');
    console.log(ele4.length) ;//返回1

    var ele5 = document.getElementsByName('haiyan');
    console.log(ele5.length); //返回1

//====3.=============================
id和name的不支持
   var div1=document.getElementById("div1");

////支持;
   var ele= div1.getElementsByTagName("p");
   alert(ele.length);
////支持
   var ele2=div1.getElementsByClassName("div2");
   alert(ele2.length);
////不支持
   var ele3=div1.getElementById("div3");
   alert(ele3.length);
////不支持
   var ele4=div1.getElementsByName("yuan");
   alert(ele4.length)

 上述的length:返回的是标签的个数,,一个是在局部下的,,,一个是在全局下的(document.~~~)

 

方式二:导航查找节点:通过某一个标签的位置去查找另一个标签(这是一个导航属性)

'''

parentElement           // 父节点标签元素

children                // 所有子标签

firstElementChild       // 第一个子标签元素

lastElementChild        // 最后一个子标签元素

nextElementtSibling     // 下一个兄弟标签元素

previousElementSibling  // 上一个兄弟标签元素

'''
//    方式二:导航查找
//<div id ='div1'>
//     <div class="div2" name = 'haiyan'>lallala</div>
//     <div name="haiyan">lkkaakkka</div>
//     <div id ='div3'>aaaaaaaaaaaaaa</div>
//    <p>hrllo</p>
//</div>
//注意:1.如果是数组的话后面切记getElementsByClassName('div2')[0]
//        2.查找元素的那些方法Elements加了s的打印的就是数组
//    1,==================
    var ele = document.getElementsByClassName('div2')[0];
    var ele1= ele.parentElement;
    console.log(ele1)  ;//找div2标签的父亲
//    2.===============
    var ele = document.getElementById('div1');
    var ele1 = ele.children;
    console.log(ele1) ; //找到div1下的所有的子标签
//    3.===================
    var ele = document.getElementById('div1');
    var ele1 = ele.firstElementChild;
    console.log(ele1);  //找到div1下的第一个子标签的元素
//    4.==================
    var ele = document.getElementById('div1');
    var ele1 = ele.lastElementChild;
    console.log(ele1);  //找到div1下的最后一个子标签的元素
//    5.===============
    var ele = document.getElementsByName('haiyan')[0];
    var ele1 = ele.nextElementSibling;
    console.log(ele1) ; //下一个兄弟标签元素
//    6.===============
    var ele = document.getElementsByName('haiyan')[0];
    var ele1 = ele.previousElementSibling;
    console.log(ele1)  //上一个兄弟标签元素

4.节点操作

1.创建节点

createElement(标签名) :创建一个指定名称的元素。
例:var  tag=document.createElement(“input")
            tag.setAttribute('type','text');

2.添加节点

追加一个子节点(作为最后的子节点)

somenode.appendChild(newnode)

 

把增加的节点放到某个节点的前边

somenode.insertBefore(newnode,某个节点);

3.删除节点

removeChild():获得要删除的元素,通过父元素调用删除

4.替换节点

somenode.replaceChild(newnode, 某个节点);

5.节点属性操作

  1.获取文本节点的值:innerText    innerHTML

    innerText:不管你是赋值还是取值,只能识别纯文本

     innerHtml:既可以识别纯文本,也可以识别标签
//    文本属性
//  1.innerText:不管你是赋值还是取值,只能识别纯文本
        var a1 = document.getElementsByClassName('c2')[0];
//        console.log(a1);
        //取值操作
        console.log(a1.innerText); //你好吗/
        console.log(a1.innerHTML); //你好吗/
        //赋值操作
        a1.innerText='Egon';
        a1.innerHTML='<a href="">hello</a>';
//  2.innerHtml:既可以识别纯文本,也可以识别标签
        var b1 = document.getElementsByClassName('c2')[1];
//        console.log(b1);
        //取值操作
        console.log(b1.innerText);
        console.log(b1.innerHTML);
        //赋值操作
        b1.innerText = 'lala';
        b1.innerHTML = '<input type="text">';

  2.属性(attribute)操作:

 elementNode.setAttribute(name,value)    
 elementNode.getAttribute(属性名)        <-------------->elementNode.属性名(DHTML)
 elementNode.removeAttribute(“属性名”);
   泛指所有的属性
  getAttribute 可以操作其他的,,但是不可以操作class
<body><div class="c1" id="d1">DIV</div>
<script>
    var ele = document.getElementsByClassName('c1')[0];
    ele.id='d2';//修改id
    console.log(ele);

//取属性值 :
//    方式一
    console.log(ele.getAttribute('id'));
//    方式二
    console.log(ele.id);
/ 属性赋值
//    方式一
    ele.setAttribute('id','d3');
    console.log(ele);
//    方式二
    ele.id = 'd3';
    console.log(ele);

  3.value获取当前选中的value值

          1.input   
          2.select (selectedIndex)
          3.textarea  

  4.关于class的操作:

//    class属性=============
     var ele = document.getElementsByClassName('c1')[0];
     console.log(ele.className); //打印类的名字
     
     ele.classList.add('hide');
     console.log(ele); //<div class="c1 hide" id="d1">

     ele.classList.remove('hide');//吧添加的remove移除了
     console.log(ele) 

  5.改变css样式:

<p id="p2">Hello world!</p>

document.getElementById("p2").style.color="blue";

                             .style.fontSize=48px

四、DOM Event(事件)

1.事件类型

onclick        当用户点击某个对象时调用的事件句柄。
ondblclick     当用户双击某个对象时调用的事件句柄。

onfocus        元素获得焦点。               练习:输入框
onblur         元素失去焦点。               应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.
onchange       域的内容被改变。             应用场景:通常用于表单元素,当元素内容被改变时触发.(三级联动)

onkeydown      某个键盘按键被按下。          应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.
onkeypress     某个键盘按键被按下并松开。
onkeyup        某个键盘按键被松开。

onload         一张页面或一幅图像完成加载。

onmousedown    鼠标按钮被按下。
onmousemove    鼠标被移动。
onmouseout     鼠标从某元素移开。
onmouseover    鼠标移到某元素之上。
onmouseleave   鼠标从元素离开

onselect       文本被选中。
onsubmit       确认按钮被点击

2.绑定事件方式

方式一

<!--绑定事件的方式一-->
<div onclick="foo(this)">div</div>
<div class="c1">div2</div>
<script>
    function foo(self) {
        console.log(self); //<div onclick="foo(this)" style="color: red;">
        self.style.color = 'red';
    }

方式二

//方式二
//    事件的绑定方式2:标签对象.on事件 = function (){}
     var ele=document.getElementsByClassName("c1")[0];
     ele.onclick=function () {
        console.log(this); // this 代指: 当前触发时间的标签对象;
        this.style.fontSize="30px"
    };

3.事件介绍

4.事件传播

实例练习

1.左侧菜单

2.搜索框

3.模态对话框

4.表格案例

5.select移动

6.二级联动

7.跑马灯与tab切换

 

 

 
 

 

web前端第九篇js的dom对象三

一、JS中for循环遍历测试for循环遍历有两种第一种:是有条件的那种,例如  for(vari=0;i<ele.length;i++){}第二种:for(variinli){}现在我们来说一下测试一下第二种(数组和obj的)//测试for循环<!DOCTYPEhtml><htmllang="en">&l... 查看详情

第七篇:面向对象高级

第七篇:面向对象高级   PYTHON-绑定方法反射内置函数PYTHON-组合封装多态property装饰器 查看详情

flask第七篇flask中的wtforms使用

一、简单介绍flask中的wtformsWTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证。安装:pip3installwtforms二、简单使用wtforms组件1、用户登录具体代码:fromflaskimportFlask,render_template,request,redirectfromwtforms.fieldsimp... 查看详情

第七篇商城系统-商品发布-sku和spu管理(代码片段)

...;PubSub在.eslintrc.js中添加一下配置1.1.2品牌关联拷贝对应的前端页面文件添加后端对应的服务然后service中查询处理最后的显示效果1.1.3会员等级  首先我们需要启动会员模块,并且配置对应的网关路由信息1.1.4规格参数  ... 查看详情

coreanimation文档翻译(第七篇)—改变layer的默认动画

前言核心动画使用action对象实现它的可视化动画。一个action对象是指遵循CAAction协议并定义了Layer相关的动画行为的对象。所有的CAAnimation对象实现了这个协议,无论何时Layer的属性发生变化的时候就会执行对应的action对象(包含C... 查看详情

第七篇:两个经典的文件io程序示例

前言    本文分析两个经典的C++文件IO程序,提炼出其中文件IO的基本套路,留待日后查阅。程序功能  程序一打印用户指定的所有文本文件,程序二向用户指定的所有文本文件中写入数据。程序一代码及其注释1#... 查看详情

vue.js学习笔记第七篇表单控件绑定

本篇主要说明表单控件的数据绑定,这次没有新的知识点文本框1、普通文本框<divid="app-1"><p><inputv-model="textBox"placeholder="输入内容...">输入的内容:{{textBox}}</p></div><scripttype="text/javascript">varvm1=ne 查看详情

r语言学习第七篇:列表(代码片段)

列表(List)是R中最复杂的数据类型,一般来说,列表是数据对象的有序集合,但是,列表的各个元素(item)的数据类型可以不同,每个元素的长度可以不同,是R中最灵活的数据类型。列表项可以是列表类型,因此,列表被认... 查看详情

前端js4

一 从基础知识到JS-Web-API1DOM可以理解为:浏览器把拿到的html代码,结构化一个浏览器能识别并且JS可以操作的一个模型而已2DOM节点操作3porperty:js对象的一个属性4Attribute:标签的一个属性5DOM结构操作新增节点获取父元素获取... 查看详情

小刘同学的第七篇博文

真是醉了,最近笔记本坏了没办法,只好给自己的平板装数据库,而且平板没有网线接口,只有用校园网下,500KB,很酸爽。。。上午上了一下午,然后又解了个压,解压解了半小时,平板的配置是真的低。。。又安装了一下午... 查看详情

springboot之旅第七篇-docker

一、引言记得上大三时,要给微机房电脑安装系统,除了原生的操作系统外,还要另外安装一些必要的开发软件,如果每台电脑都重新去安装的话工作量就很大了,这个时候就使用了windows镜像系统,我们将要安装的软件装好打... 查看详情

web前端之javascript

一、JavaScript介绍1、一个完整的JavaScript实现是由以下3个不同部分组成的:(1)核心(ECMAScript)(2)文档对象模型(DOM)Documentobjectmodel(整合js,css,html)(3)浏览器对象模型(BOM)Broswerobjectmodel(整合js和浏览器)2、特点JavaScr... 查看详情

nodejs和web前端javascript什么区别

web前端javascript组成:  ECMAScript,(是js的标准,js是它的具体实现和扩展,它描述语言的语法和基本对象,如:语法,运算符,语句,继承机制,数据结构以及一些内置对象)  DOM(文档对象模型),描述处理网页内容的方... 查看详情

第七篇-列表式app:listactivity及listview

一、新建一个emptyactivity的项目。二、修改MainActivity.java:extendsAppCompactActivity改为extendsListActivity。注释掉setContentView(R.layout.activity_main);packagecom.example.aimee.listapp;importandroid.app.ListActivity;im 查看详情

第七篇springsecurity中的权限管理

SpringSecurity中的权限管理  SpringSecurity是一个权限管理框架,核心是认证和授权,前面已经系统的给大家介绍过了认证的实现和源码分析,本文重点来介绍下权限管理这块的原理。一、权限管理的实现  服务端的... 查看详情

cocos2d-x3.0游戏实例之《别救我》第七篇——物理世界的碰撞检測

事实上我也非常吃惊…居然写到第七篇了,我估计也就是四篇的内容,感觉非常奇妙,我也不会非常唠叨什么吖(小若:32个喷!),怎么都到第七篇了。 笨木头花心贡献,啥?花心?不呢,是用心~转载请注明,原文地址:... 查看详情

前端基础之bom和dom(代码片段)

BOM:浏览器对象模型,可以使JS有能力操作浏览器DOM:文档对象模型,可以访问HTML文档内的所有元素Window对象所有浏览器都支持window对象。它表示浏览器窗口一些常用的Window方法:window.innerHeight-浏览器窗口的内部高度window.innerWidth-... 查看详情

javascript运动系列第七篇——鼠标跟随运动

×目录[1]眼球转动[2]苹果菜单前面的话  运动除了直线运动和曲线运动两种运动形式外,还有一种运动形式是鼠标跟随运动,而这种跟随运动需要用到三角函数的相关内容或者需要进行比例运算。本文将以几个小实例来介... 查看详情