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. oracle DBA操作

    sqlplus sys/tiger  as sysdba; alter user scott account unlock; 用户已更改 切换用户:conn scott/tiger as sysdba ...

  2. Web Services使用SOAP Header

    在Web Services方法进行通信使用SOAP遵循标准的SOAP格式,该格式的一部分是在XML文档中编码的数据.XML文档包含一个Envelope根元素(由必需的Body元素和可选的Header元 ...

  3. consul客户端配置微服务实例名称和ID

    consul客户端必须配置微服务实例名称和ID,微服务启动的时候需要将名称和ID注册到注册中心,后续微服务之间调用也需要用到. 名称可以通过以下两种方式配置,优先级从高到低.两个都不配置则默认服务名称 ...

  4. C#-System.Dynamic.ExpandoObject

    dynamic dynamicObject = new System.Dynamic.ExpandoObject(); dynamicObject.Id = Guid.NewGuid(); (dyna ...

  5. NetCore.SignalR.Demo演示

    项目github,点击https://github.com/wangpengzong/NetCore.SignalR.Demo 1.打开服务端Server(\SignalR.Server\bin\De ...

  6. django.http.request中QueryDict 对象

    在一个 HttpRequest 对象中, GET 和 POST 属性都是 django.http.QueryDict 的实例. QueryDict 是一个类似于字典的类,专门用来处理用一个键的多值.当 ...

  7. Python Web 程序使用 uWSGI 部署

    Python Web 程序使用 uWSGI 部署 WSGI是什么? WSGI,全称 Web Server Gateway Interface,或者 Python Web Server Gateway ...

  8. (详细)Eclips+jsp+servlet+mysql+登录实例+源代码

    欢迎任何形式的转载,但请务必注明出处. 该教程较全,从软件的安装以及相关的环境配置我都放置了相关教程的链接,读者可直接点击进入.自己写电商网站作业时查找了很多资料,但都不是很全,所以趁着寒假写了这份教 ...

  9. Vivado cordic IP求模求角教程

    前言 当需要对复数求模的时候,用FPGA怎么求呢?怎么开根号? 方法1:先求幅值平方和,再使用cordic IP开根号.(蠢办法) 方法2:直接用cordic求取模值. 此处只介绍方法2,资源占用更少 ...

  10. iOS10推送必看UNNotificationAttachment以及UNTimeIntervalNotificationTrigger

    虽然这篇文章比较长,也不好理解,但是还是建议大家收藏,以后用到的时候,可以看看,有耐心的还是读一读. 这篇文章开始,我会跟大家好好讲讲,苹果新发布的iOS10的所有通知类. 一.创建本地通知事例详解: ...