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. show processlist说明

    mysql> show processlist; 有时候输出太多,可以用下面的语句代替 mysql> select * from information_schema.processlis ...

  2. Spring AOP日志实现(二)--获取访问者IP及访问路径

    获取类及方法上的@RequestMapping注解: 应该是不等于: 获取访问者的ip地址,首先配置一个监听器: 配置完监听器后,就可以在类中注入一个HttpServletRequest: 获取ip:

  3. Arm-Linux 移植 jpeg库

    背景: jpeg库的使用可以提高显示效率. host平台 :Ubuntu 16.04 arm平台 : S5P6818   jpeg    :v9c arm-gcc :4.8.1 主机准备: 运行以下脚 ...

  4. 软键盘 显示隐藏 测量高度 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  5. 查看IIS错误日志

    部署在IIS中的程序,难免出现数据产生异常 在事件查看器中,可以看出来具体的错误信息,代码定位

  6. pymysql操作mysql数据库

    1.建库 import pymysql # 建库 try: conn=pymysql.connect( host='127.0.0.1', port=3306, user='root', passwd ...

  7. uni-app 入门之 nvue (weex) 爬坑记

    前言 uni-app 是 DCloud 出品的新一代跨端框架,可以说是目前跨端数最多的框架之一了,目前支持发布到:App(Android/iOS).H5.小程序(微信小程序/支付宝小程序/百度小程序/ ...

  8. 处理request接收参数的中文乱码的问题:

    Ø POST的解决方案: * POST的参数在请求体中,直接到达后台的Servlet.数据封装到Servlet中的request中.request也有一个缓冲区.request的缓冲区也是ISO-88 ...

  9. nodejs库express是如何接收inbound json请求的

    这样几行简单的代码创建一个web服务器: var express = require('express'); var app = express(); var server = require('ht ...

  10. php各种框架的区别

    一.CI框架 CI框架是一个简单快速的PHP MVC轻量级框架,它执行效率高,快速简洁,代码量少,适合中小型项目开发,也可以做大型项目,但扩展能力不是很好,Ci支持的url模式默认为pathinfo形 ...