1、DOM文档对象模型:操作页面元素(标签)

  • html文件看成一个文档,把文档看成一个对象
  • xml也是一种文档,标签自定义,系统不自带标签,偏向于存储数据

2、DOM树:由文档及文档中的所以元素(标签)组成的一个树形结构图,叫树状图,也叫DOM树

  • 元素(element):页面中的每个标签都是一个元素,每个元素都是一个对象
  • 文档(document):一个页面就是一个文档
  • 节点(node):页面中所有内容都是节点,包括标签,属性,文本

3.DOM操作案例:

<!-- 例1:点击弹窗(演示逐渐html,js分离的过程) -->
<!-- 最开始:在HTML里写入js -->
<input type="button" value="最开始" onclick="alert('我被点了')">
<!-- 改进:利用函数 -->
<input type="button" value="改进" onclick="f1()">
<script>
var f1=function(){
alert("我被点了");
};
</script>
<!-- 最终版本: -->
<input type="button" value="最终版本" id="btn">
<script>
//必须先有按钮,然后才能获取,获取之后才能注册事件
var btnobj=document.getElementById("btn");
btnobj.onclick=function(){
alert("我被点了");
}
</script>
 <!-- 例2:点击按钮显示图片:点击按钮设置img标签的src属性有个图片的路径 -->
<input type="button" value="点击" id="btn">
<img src="" alt="" id="im">
<script>
var btnobj=document.getElementById("btn")
btnobj.onclick=function(){
var imobj=document.getElementById("im");
imobj.src="1.png";
imobj.alt="未找到图片";
}
</script>
<!-- 例3:点击按钮修改p标签内容 -->
<input type="button" value="点击" id="btn">
<p id="p1"></p>
<script>
//一般成对的标签,中间的文本内容设置用innerText这个属性的方式
document.getElementById("btn").onclick=function(){
document.getElementById("p1").innerText="我是新写进的内容";
};
</script>
<!-- 例4:点击按钮设置多个p标签的内容 -->
<input type="button" value="点击" id="btn">
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<script>
//一个或者多个标签,都是在数组中存储的,getElementsByTagName这行代码返回值就是一个数组
document.getElementById("btn").onclick=function( ){
var pobjs=document.getElementsByTagName("p");
for(var i=0;i<pobjs.length;i++){
pobjs[i].innerText="我们都是新内容";
}
};
</script>
<!-- 例5:点击每个图片弹出对话框 -->
<img src="pic.png" alt="" />
<img src="pic.png" alt="" />
<img src="pic.png" alt="" />
<script>
var imobj=document.getElementsByTagName("img");
for(var i=0;i<imobj.length;i++){
imobj[i].onclick=function(){
alert("我被点了");
}
}
</script>
 <!-- 例6:点击按钮修改value属性 -->
<input type="button" value="按钮" id="btn">
<script>
//在某个元素的事件上中,自己的事件中的this就是当前的这个元素对象
var btnobj=document.getElementById("btn");
btnobj.onclick=function(){
this.value="我换了";
this.type="text";
}
</script>
<!-- 例7:点击图片修改自身的宽和高 -->
<img src="pic.png" alt="">
<script>
var imgobj=document.getElementsByTagName("img");
imgobj[0].onclick=function(){
this.width="200";
this.height="300";
}
</script>
<!--例8: 点击每个按钮修改内容 "被点了" -->
<input type="button" value="">
<input type="button" value="">
<input type="button" value="">
<input type="button" value="">
<input type="button" value="">
<input type="button" value="">
<script>
var btnobjs=document.getElementsByTagName("input");
//每个按钮注册事件
for(var i=0;i<btnobjs.length;i++){
btnobjs[i].onclick=function(){
//把所有的按钮的value值设置为"我没被动"
for(var j=0;j<btnobjs.length;j++){
btnobjs[j].value="我没被动";
}
this.value="被点了";
}
}
</script>
 <!-- 例9:点击图片修改路径:a链接的路径是大图,嵌套小图片 -->
<a href="big.png" id="ak"><img src="small.png" alt="" id="im"></a>
<script>
document.getElementById("im").onclick=function(){
this.src=document.getElementById("ak").href
// return false;//-----阻止页面跳转
}
</script>
 <!-- 10:点击按钮切换图片 -->
<input type="button" value="切换大图" id="btn"><br>
<img src="small.png" alt="" id="im">
<script>
document.getElementById("btn").onclick=function(){
document.getElementById("im").src="big.png";
};
</script>
<!-- 例11:点击按钮修改兴趣(表单) -->
<input type="button" value="选择兴趣" id="btn">
<input type="checkbox" name="fav" value="1">王者荣耀
<input type="checkbox" name="fav" value="2" id="ck1">绝地求生
<input type="checkbox" name="fav" value="3">QQ飞车
<input type="checkbox" name="fav" value="4">魔兽
<input type="checkbox" name="fav" value="5" id="ck2">LOL
<input type="checkbox" name="fav" value="6">DNF
<script>
//结论:在表单标签中,如果属性和值只有一个,并且是这个属性本身,那么在写DOM操作时,这个属性值是布尔类型就可以了
document.getElementById("btn").onclick=function(){
document.getElementById("ck1").checked=true;
document.getElementById("ck2").checked=true;
};
</script>
<!-- 例12:点击按钮文本域的相关属性设置 -->
<textarea name="" id="tt" cols="30" rows="10" rea>红红火火恍恍惚惚红红火火恍恍惚惚红红火火恍恍惚惚红红火火
恍恍惚惚红红火火恍恍惚惚红红火火恍恍惚惚红红火火恍恍惚惚红红火火恍恍惚惚红红火火恍恍惚惚红红火</textarea><br>
<input type="button" value="设置禁用" id="btn1">
<input type="button" value="设置只读" id="btn2">
<script>
//disable-----这个属性是禁用的
//readonly-----这个属性是只读(坑:js设置o要大写)
//html表单中属性和值是自己的,并且只有一个,只写这个属性即可,不用赋值
document.getElementById("btn1").onclick=function(){
document.getElementById("tt").disabled=true;
};
document.getElementById("btn2").onclick=function(){
document.getElementById("tt").readOnly=true;
};
</script>
 <!-- 例13:点击按钮修改div的宽高和背景 -->
<input type="button" value="设置背景" id="btn">
<div id="dv"></div>
<script>
//1.设置样式通过style属性
//2.设置宽高后面必须加单位px
//3.凡是css属性有连接符的,去掉,然后后面的首字母大写即可
document.getElementById("btn").onclick=function(){
document.getElementById("dv").style.width="200px";
document.getElementById("dv").style.height="300px";
document.getElementById("dv").style.backgroundColor="yellow";
};
</script>
<!-- 例14:点击按钮设置div隐藏/显示 -->
<input type="button" value="设置隐藏" id="btn">
<div id="dv" style="width: 200px;height: 200px;background: rgb(25, 211, 25);"></div>
<script>
//显示隐藏用display:none和display:block
document.getElementById("btn").onclick=function(){
if(this.value=="隐藏"){
document.getElementById("dv").style.display="none";
this.value="显示";
}else{
document.getElementById("dv").style.display="block";
this.value="隐藏";
}
};
</script>
<style>
.cls{
width: 300px;
height: 300px;
background: red;
border: 10px solid rgb(8, 231, 45);;
}
</style>
</head>
<body>
<!-- 例15:点击按钮设置div样式,用类样式的方法 -->
<input type="button" value="设置样式" id="btn">
<div id="dv"></div>
<script>
//js代码在操作DOM时,设置元素的类样式,不能使用class关键字,使用className代替
//如果判断div是否使用了类样式的时候,没有class属性就是className==""
document.getElementById("btn").onclick=function(){
document.getElementById("dv").className="cls";
};
</script>
</body>

DOM操作1的更多相关文章

  1. jQuery学习之路(2)-DOM操作

    ▓▓▓▓▓▓ 大致介绍 jQuery作为JavaScript库,继承并发扬了JavaScript对DOM对象操作的特性,使开发人员能方便的操作DOM对象. ▓▓▓▓▓▓ jQuery中的DOM操作 看 ...

  2. 从DOM操作看Vue&React的前端组件化,顺带补齐React的demo

    前言 接上文:谈谈我对前端组件化中“组件”的理解,顺带写个Vue与React的demo 上次写完博客后,有朋友反应第一内容有点深,看着迷迷糊糊:第二是感觉没什么使用场景,太过业务化,还不如直接写Vue ...

  3. 摆脱DOM操作,从TodoMVC看angularJS

    取代jQuery? 我很久之前便听说了angularJS的大名,之前的leader也经常感叹angularJS的设计如何如何精妙,可叹一直没有机会深入了解,国庆长假因为没钱出游,倒是可以对他做一个了解 ...

  4. 前端页面卡顿?或是DOM操作惹的祸,需优化代码

    文档对象模型(DOM)是一个独立 于特定语言的应用程序接口.在浏览器中,DOM接口是以JavaScript语言实现的,通过JavaScript来操作浏览器页面中的元素,这使得 DOM成为了JavaSc ...

  5. webform(九)——JQuery基础(选择器、事件、DOM操作)

    JQuery -- 一个js函数包 一.选择器 1.基本选择器 ①id选择器:#       ②class选择器:.       ③标签名选择:标签名 ④并列选择:用,隔开          ⑤后代选 ...

  6. HTML 学习笔记 JQuery(DOM 操作)

    一般来说,DOM操作分为三个方面,即:DOM Core(核心), HTML_DOM 和 CSS_DOM. 1.DOM Core DOM Core 并不专属于JavaScript,任何一种支持DOM的程 ...

  7. dom操作导致超级卡顿。。。

    var i=0;j=30;setinterval(function(){ document.getElementId(idname).style.top=j+'px'; i<3?i++:i=0; ...

  8. php中通过DOM操作XML

    DOM文档在js里早就接触过,知道DOM不但可以操作html文档,还可以操作XHTML,XML等文档,有着极强的通用性,下面我们通过两个小例子,看看在PHP中是如何用DOM操作XML文档的,和js中差 ...

  9. jQuery的DOM操作详解

    DOM(Document Object Model-文档对象模型):一种与浏览器, 平台, 语言无关的规则, 使用该接口可以轻松地访问页面中所有的标准组件DOM操作的分类 核心-DOM: DOM Co ...

  10. [译]AngularJS中DOM操作

    再翻译一篇干货短文,原文:AngularJS jQuery 虽然Angularjs将我们从DOM的操作中解放出来了,但是很多时候我们还是会需要在controller/view加载之后执行一些DOM操作 ...

随机推荐

  1. c++实现的顺序栈

    栈是一种运算受限的线性表,是一种先进后出的数据结构,限定只能在一端进行插入和删除操作,允许操作的一端称为栈顶,不允许操作的称为栈底 因此需要的成员变量如下 int *_stack; //指向申请的空间 ...

  2. Vue.js 2.x 混入

    Vue.js 2.x mixins 混入 混入(mixins)是一种分发vue组件中可复用功能的非常灵活的方式.混入对象可以包含任意组件选项.当组件使用混入对象时,所有混入对象的选项将被混入该组件本身 ...

  3. 单选按钮(CheckBox)

    import React, { useState, useEffect } from 'react' import PropTypes from 'prop-types' import _ from ...

  4. Gogs搭建私有git代码仓库

    前置环境: 数据库 -> mysql git -> 服务端和客户端版本必须>=1.8.3 ssh服务 -> 如果只使用http/https方式的话,服务端无需配置ssh. st ...

  5. Asp.netCore 是用的Socket 吗?

    Asp.netCore 是用的Socket 的krestrel 用的是Socket! public static IWebHostBuilder CreateDefaultBuilder(string ...

  6. vue+iview的form表单校验总结

    这篇文章时关于如何使用iview的form表单校验.主要学习如何使用form校验(以校验文字长度为例),以及如何动态添加校验规则和异步校验. 1.为需要校验的表单添加form标签 <!--注意: ...

  7. webstorm处理代码冲突

     出现这个冲突界面后,不要关闭弹窗,不然会把冲突更新下来,也不要点merge. 正确做法:双击文件开始解决冲突!!!!

  8. Springboot2.x整合Redis以及连接哨兵模式/集群模式

    依赖: <!--spirngboot版本为2.x--><!-- 加载spring boot redis包,springboot2.0中直接使用jedis或者lettuce配置连接池, ...

  9. 使用swap扩展内存

    当系统在内存不够用的时,新建一个swap文件,这个文件可以把内存中暂时不用的传输到对应的swap文件上,相当于扩展了内存的大小,具体使用方法如下: swap文件可以自己选择放在哪里,自己新建一个对应的 ...

  10. 外汇MT4编程手册

    1.为了最大的方便用户,交易中断的一些变量可以从智能系统输入. AccountNumber-账号(同义词:AccNum) Ask –卖价(买方出价) Balance – 交易账户的余额值 Bars – ...