DOM操作2

一、API和WebAPI

  •  API就是接口,就是通道,负责一个程序和其他软件的沟通,本质是预先定义的函数。
  • Web API是网络应用程序接口。包含了广泛的功能,网络应用通过API接口,可以实现存储服务、消息服务、计算服务等能力,利用这些能力可以进行开发出强大功能的web应用。

二、DOM对象

  •  通过DOM方式获取的元素得到的对象
  • 页面中最顶级的对象:document
  • 根元素:HTML标签

三、总结获取元素的方式

  •  根据id属性的值获取元素,返回的是一个元素对象

document.getElementById("id属性的值")
  • 根据标签的名字获取元素,返回的是一个伪数组,里面存储了多个DOM对象

 document.getElementsByTagName("标签名字")
  • 根据name的值获取元素,返回的是一个伪数组,里面存储了多个DOM对象

document.getElementsByName("name属性的值")
  • 根据类样式的名字来获取元素,返回的一个伪数组,里面存储了多个DOM对象

 document.getElementsByClassName("类样式的名字")
  • 根据选择器获取元素,返回的是一个元素的对象

 document.querySelector("选择器的名字")
  • 根据选择器获取元素,返回的是一个伪数组,里面存储了多个DOM对象

document.querySelectorAll("选择器的名字")

四、textcontent和innertext及其兼容性写法

  •  设置标签中的文本内容,使用 textcontent 属性,谷歌火狐支持,IE8不支持
  • 设置标签中的文本内容,使用 innertext  属性,谷歌火狐,IE8支持,但是有些低版本的火狐浏览器不支持
  • 兼容性代码写写法:(原理:如果属性在浏览器不支持,这个属性类型是 undefined
 <script>//设置任何任意的标签中间的任意文本内容function setInnerTtext(element,text){if(typeof element.textContent=="undefined"){element.innerText=text;}else{element.textContent=text;}}//获取任意标签中间的文本内容function getInnerTtext(element){if(typeof element.textContent=="undefined"){return element.innerText;}else{return element.textContent;}}</script>

五、innerText和innerHTML的区别

  • innerText  主要设置文本的内容的,设置标签的内容是没有标签的效果的
  • innerHTML 可以设置文本的内容,也可以设置标签内容,标签可以呈现效果
  • innerText 可以获取标签中间的文本内容,获取不到文本内容里包含的标签
  • innerHTML 可以获取标签中间的文本内容,也可以获取文本中包含的标签
  • 所以推荐使用innerHTML

六、自定义属性

  • HTML本身没标签中本身没有这个属性,程序员自己添加的,为了储存数据
  • 获取属性用getAttribute("属性名")-----如果html里写了自定义的标签或者已经设置
<input type="button" value="自定义" id="btn"><p new="20">获取这个自定义属性</p><p id="demo"></p><script>document.getElementById("btn").onclick=function(){var p=document.getElementsByTagName("p")[0];document.getElementById("demo").innerHTML=p.getAttribute("new");}</script>
  • 设置属性用setAttribute(“名字”,“值”)-----通过js设置
  • 移除自定义属性,用removeAttribute("属性的名字")-----也可以移除不是自定义的自带属性
    <input type="button" value="设置" id="btn1"><input type="button" value="移除" id="btn2"><p>设置一个自定义属性</p><p>xxxxxxxxxx</p><script>document.getElementById("btn1").onclick=function(){document.getElementsByTagName("p")[0].setAttribute("new","10");};document.getElementById("btn2").onclick=function(){document.getElementsByTagName("p")[0].removeAttribute("new");};</script>

七、直接通过document获取元素

    <script>//1.获取body
    console.log(document.body);//返回body标签(元素)//2.获取title
    console.log(document.title);//返回标签中的值,即标题//3.获取html
    console.log(document.documentElement);//返回html标签(元素)</script>

八、案例

 <!-- 例1:点击按钮禁用文本框 --><input type="text" value="" id="txt"><input type="button" value="禁止使用文本框" id="btn"><script>document.getElementById("btn").onclick=function(){document.getElementById("txt").disabled=true;};</script>
<!-- 例2:点击按钮修改列表背景颜色 --><input type="button" value="背景颜色" id="btn"><ul id="uu"><li>要拿执着</li><li>让我不低头</li><li>更精彩的活</li><li>将命运打破</li></ul><script>document.getElementById("btn").onclick=function(){var liobj=document.getElementById("uu").getElementsByTagName("li");for(var i=0;i<liobj.length;i++){liobj[i].style.backgroundColor="yellow";}};</script>
<!-- 例3:阻止超链接跳转 --><a href="http://www.baidu.com" id="ak">百度</a><script>document.getElementById("ak").onclick=function(){return false;}</script>
<!-- 例4:点击小图切换大图 --><a href="big.png" id="ak"><img src="small.png" alt=""></a><br><img src="" alt="" id="big"><script>document.getElementById("ak").onclick=function(){document.getElementById("big").src=this.href;return false;};</script>
<!-- 例5:列表隔行变色 --><input type="button" value="隔行变色" id="btn"><ul id="uu"><li>要拿执着</li><li>让我不低头</li><li>更精彩的活</li><li>将命运打破</li></ul><script>document.getElementById("btn").onclick=function(){var liobj=document.getElementById("uu").getElementsByTagName("li");for(var i=0;i<liobj.length;i++){// if(i%2==0){//     liobj[i].style.backgroundColor="yellow";// }else{//     liobj[i].style.backgroundColor="red";// }
                liobj[i].style.backgroundColor=i%2==0?"yellow":"red";}};</script>
 <!-- 例6:列表高亮显示,排他功能 --><ul id="uu"><li>要拿执着</li><li>让我不低头</li><li>更精彩的活</li><li>将命运打破</li></ul><script>//获取所有的li标签var liobj=document.getElementById("uu").getElementsByTagName("li");for(var i=0;i<liobj.length;i++){//为li标签注册鼠标进入事件
            liobj[i].onmousemove=function(){this.style.backgroundColor="yellow";}//为li标签注册鼠标离开事件
            liobj[i].onmouseout=function(){this.style.backgroundColor="";}}</script>
<!-- 例7: 根据name属性值获取元素 --><input type="button" value="显示效果" id="btn"><br><input type="text" value="你好" name="name1"><br><input type="text" value="你好" name="name2"><br><input type="text" value="你好" name="name3"><br><input type="text" value="你好" name="name1"><br><input type="text" value="你好" name="name3"><br><input type="text" value="你好" name="name2"><br><input type="text" value="你好" name="name1"><script>document.getElementById("btn").onclick=function(){var inputs=document.getElementsByName("name1");for(var i=0;i<inputs.length;i++){inputs[i].value="我哈儿美好";}}</script>
<!-- 例8:根据类样式的名字获取元素 --><div class="cls">第一个div</div><div>第二个div</div><span>第一个span</span><br><span class="cls">第二个span</span><br><input type="button" value="显示效果" id="btn"><script>document.getElementById("btn").onclick=function(){var clsobj=document.getElementsByClassName("cls");for(var i=0;i<clsobj.length;i++){clsobj[i].style.backgroundColor="yellow";}};</script>
 <!-- 例9:其他的获取元素的方法 --><div class="dv">第一个div</div><div>第二个div</div><span>第一个span</span><br><span id="sp">第二个span</span><br><input type="button" value="显示效果" id="btn"><script>document.getElementById("btn").onclick=function(){document.querySelector(".dv").style.backgroundColor="yellow";var spobj=document.querySelectorAll("#sp");for(var i=0;i<spobj.length;i++){spobj[i].style.backgroundColor="pink";}};</script>
<!-- 例10:div高亮显示 -->
<style>
#dv{
width: 200px;
height: 200px;
background: rgb(161, 131, 131);
border: 10px solid rgb(161, 131, 131);
}
</style>
   <div id="dv"></div><script>document.getElementById("dv").onmouseover=function(){this.style.border="10px solid red";}document.getElementById("dv").onmouseout=function(){this.style.border="";}</script>
 <!-- 例11:模拟搜索框 --><input type="text" id="txt" value="请输入关键字" style="color: gray"><script>document.getElementById("txt").onfocus=function(){if(this.value=="请输入关键字"){this.value="";this.style.color="black";}};document.getElementById("txt").onblur=function(){if(this.value.length==0){this.value="请输入关键字";this.style.color="gray";}}</script>
<!-- 例13:验证文本框密码长度 --><input type="text" value="" id="txt"><script>document.getElementById("txt").onblur=function( ){if(this.value.length>6&&this.value.length<10){this.style.backgroundColor="red";}else{this.style.backgroundColor="blue";}};</script>

 

转载于:https://www.cnblogs.com/EricZLin/p/8966884.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/251842.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浮动布局demo

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>浮动布局</title><style type"text/css">*{margin: 0;padding: 0;}header{height: 150px;background: yellow;}nav{height: 30px;background: green;…

UI行业发展预测 系列规划的调整

我又双叒叕拖更了&#xff0c;上一篇还是1月22号更新的&#xff0c;这都3月9号了……前面几期把职业规划、能力分析、几个分析用的设计理论都写完了&#xff0c;当然实际工作中用到的方法论不止上面这些&#xff0c;后续会接着学习&#xff1b;如果你的目标是一线团队&#xff…

出现Press ENTER or type command to continue的原因

cd 然后 vim .vimrc 写入 set nu 保存 退出转载于:https://www.cnblogs.com/520qtf/p/8968441.html

基于Flask实现后台权限管理系统 - 导言

网上有这样一个段子&#xff0c;在评论语言好坏的时候&#xff0c;都会有人评论说PHP是世界上最好的语言&#xff0c;人生苦短我用Python&#xff0c;这里姑且不去评论语言的好坏&#xff0c;每一个语言存在都有它的价值&#xff0c;譬如C语言适合底层开发&#xff0c;整个Linu…

5-1 unittest框架使用

unittest是python的一个单元测试框架&#xff0c;内置的&#xff0c;不需要pip install 什么什么的。直接在py文件里面调用 import unittest。 他这个框架是怎么回事呢&#xff0c;他可以对数据初始化&#xff0c;然后执行测试&#xff08;里面有断言功能就是判断返回是否正确…

bzoj 4573: [Zjoi2016]大森林

Description 小Y家里有一个大森林&#xff0c;里面有n棵树&#xff0c;编号从1到n。一开始这些树都只是树苗&#xff0c;只有一个节点&#xff0c;标号为1。这些树 都有一个特殊的节点&#xff0c;我们称之为生长节点&#xff0c;这些节点有生长出子节点的能力。小Y掌握了一种魔…

Unity3D在C#编程中的一些命名空间的引用及说明

System包含用于定义常用值和引用数据类型、事件和事件处理程序、接口、属性和处理异常的基础类和基类。其他类提供支持下列操作的服务&#xff1a;数据类型转换&#xff0c;方法参数操作&#xff0c;数学计算&#xff0c;远程和本地程序调用&#xff0c;应用程序环境管理以及对…

docker入门简介

简介docker(容器技术)是实现虚拟化技术的一种方案,通过利用linux中命名空间,控制组和联合文件系统这个三个主要技术,来实现应用程序空间的隔离.通过对应用程序运行环境的封装来生成镜像并部署来实现跨平台,一定程度上加快了服务交付的整体流程.这篇文章主要介绍docker的一些基本…

Highcharts 配置选项详细说明

http://www.runoob.com/highcharts/highcharts-setting-detail.html 转载于:https://www.cnblogs.com/mengfangui/p/8969121.html

linux下的启停脚本

linux下的根据项目名称&#xff0c;进行进程的启停脚本 #!/bin/bashJAVA/usr/bin/java APP_HOME/opt/program/qa/wechat APP_NAMEprogramname.jar APP_PARAM"--spring.config.location${APP_HOME}/application.properties --logging.path${APP_HOME}"case $1 in star…

python 网页爬取数据生成文字云图

1. 需要的三个包&#xff1a; from wordcloud import WordCloud #词云库 import matplotlib.pyplot as plt #数学绘图库 import jieba; 2. 定义变量&#xff08;将对于的变量到一个全局的文件中&#xff09;&#xff1a; import re; pdurl_firsthttps://movie.do…

python---重点(设计模式)

前戏&#xff1a;设计模式简介 设计模式是面向对象设计的解决方案&#xff0c;是复用性程序设计的经验总结。&#xff08;与语言无关&#xff0c;任何语言都可以实现设计模式&#xff09; 设计模式根据使用目的的不同而分为创建型模式&#xff08;Creational Pattern&#xff0…

洛谷 题解 P2010 【回文日期】

因为有8个字符&#xff0c;所以可得出每一年只有一个回文日期。 因此只要判断每一年就行了。 做法&#xff1a; 我们先把年倒过来&#xff0c;例如2018年就倒为8102&#xff0c;就得出8102就是回文日期的后四个字符&#xff0c;我们只要判断一下有没有这个月份和这个日期。 具体…

线程相关

1、启动线程1.11 new Handler()形式new Handler(mContext.getMainLooper()).post(newOnekeyBindFrameActivity.NetworkThread());1.12new Handler().postDelayed(new StatusCheckLoginBindFrameThread(), IoTCultivatePlantConfig.START_ACTIVITY_POST_DELAYED);1.2 new Thread…

验证Oracle收集统计信息参数granularity数据分析的力度

最近在学习Oracle的统计信息这一块&#xff0c;收集统计信息的方法如下&#xff1a; DBMS_STATS.GATHER_TABLE_STATS (ownname VARCHAR2, ---所有者名字tabname VARCHAR2, ---表名partname VARCHAR2 DEFAULT NULL, ---要分析的分区名estimate_percent NUMBER DEFAULT NULL, …

Python之NumPy(axis=0 与axis=1)区分

Python之NumPy&#xff08;axis0 与axis1&#xff09;区分 转载于:https://www.cnblogs.com/greatljg/p/10802392.html

Python Web开发:开发wsgi中间件

本文参考了&#xff1a; github.com/alanctkc/ws…Youtube : Creating WSGI Middleware上篇文章简要提到&#xff1a;wsgi 规范中的 app 是一个可调用对象&#xff0c;可以通过嵌套调用的方式实现中间件的功能。这篇文章就来亲自动手实现一下。 此文的重点在于 app 端&#xff…

20165320 第九周学习总结

主要内容&#xff1a; 1.URL类 URL类是java.net包中的一个重要的类&#xff0c;使用URL创建对象的应用程序称为客户端程序。URL 的构造方法&#xff1a;try { URL url new URL ("http://www.google.com"); } catch (MalformedURLException e) {System.out.println(&…

Python 函数的执行流程-函数递归-匿名函数-生成器

1 函数的执行流程函数的执行需要对函数进行压栈的&#xff0c;什么是压栈呢&#xff0c;简而言之就是在函数执行时在栈中创建栈帧存放需要变量以及指针的意思。具体涉及的知识非常多&#xff0c;这里就已一个Python脚本简单进行分析。当我们运行上面代码时&#xff0c;它的执行…

python 课堂笔记-for语句

for i in range(10):print("----------",i)for j in range(10):print("world",j)if j> 5:break 转载于:https://www.cnblogs.com/leon-zyl/p/7542466.html