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. PAT(B) 1031 查验身份证(Java)

    题目链接:1031 查验身份证 (15 point(s)) 题目描述 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配 ...

  2. 列主元消去法&全主元消去法——Java实现

    Gauss.java package Gauss; /** * @description TODO 父类,包含高斯列主元消去法和全主元消去法的共有属性和方法 * @author PengHao * @ ...

  3. SVN_04建库

    示范加入一个代码库[Repository] [1]点击Repository右键,创建一个新库 (常规FSFS存储库) [2]在下面所看到的文本框中输入库名称 只创建空的库 创建完库后,没有任何内容在里 ...

  4. C# SpinLock用法。

    class Program { static void Main(string[] args) { ; ]; Stopwatch sp = new Stopwatch(); sp.Start(); / ...

  5. copy 合并

    copy /b xxx.jpg + yyy.txt zzz.jpg /b 二进制 /a 文本

  6. 转 使用IParameterInspector, IOperationBehavior,Attribute(参数检查器、操作行为接口和标签)扩展WCF操作行为

    public class EntryIdInspector : IParameterInspector { public int intParamIndex { get; set; } string ...

  7. python绘图之turtle库函数的用法

    Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行 ...

  8. 基于【 MySql 】二 || mysql详细学习笔记

    mysql重点学习笔记 /* Windows服务 */ -- 启动MySQL net start mysql -- 创建Windows服务 sc create mysql binPath= mysql ...

  9. 如何使用async和await这对组合设计统一的取Access Token的函数

    最近我在使用SAP云平台的机器学习API做和SAP系统的集成,因为SAP Cloud Platform Leonardo上的机器学期API,每次消费时需要传一个Access Token,故在每次实际调 ...

  10. string 数组转 int 数组

    用法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 //字符串数组(源数组) string[] sNums = new[] {"1", "2" ...