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高亮显示 -->
<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>
DOM操作2的更多相关文章
- jQuery学习之路(2)-DOM操作
▓▓▓▓▓▓ 大致介绍 jQuery作为JavaScript库,继承并发扬了JavaScript对DOM对象操作的特性,使开发人员能方便的操作DOM对象. ▓▓▓▓▓▓ jQuery中的DOM操作 看 ...
- 从DOM操作看Vue&React的前端组件化,顺带补齐React的demo
前言 接上文:谈谈我对前端组件化中“组件”的理解,顺带写个Vue与React的demo 上次写完博客后,有朋友反应第一内容有点深,看着迷迷糊糊:第二是感觉没什么使用场景,太过业务化,还不如直接写Vue ...
- 摆脱DOM操作,从TodoMVC看angularJS
取代jQuery? 我很久之前便听说了angularJS的大名,之前的leader也经常感叹angularJS的设计如何如何精妙,可叹一直没有机会深入了解,国庆长假因为没钱出游,倒是可以对他做一个了解 ...
- 前端页面卡顿?或是DOM操作惹的祸,需优化代码
文档对象模型(DOM)是一个独立 于特定语言的应用程序接口.在浏览器中,DOM接口是以JavaScript语言实现的,通过JavaScript来操作浏览器页面中的元素,这使得 DOM成为了JavaSc ...
- webform(九)——JQuery基础(选择器、事件、DOM操作)
JQuery -- 一个js函数包 一.选择器 1.基本选择器 ①id选择器:# ②class选择器:. ③标签名选择:标签名 ④并列选择:用,隔开 ⑤后代选 ...
- HTML 学习笔记 JQuery(DOM 操作)
一般来说,DOM操作分为三个方面,即:DOM Core(核心), HTML_DOM 和 CSS_DOM. 1.DOM Core DOM Core 并不专属于JavaScript,任何一种支持DOM的程 ...
- dom操作导致超级卡顿。。。
var i=0;j=30;setinterval(function(){ document.getElementId(idname).style.top=j+'px'; i<3?i++:i=0; ...
- php中通过DOM操作XML
DOM文档在js里早就接触过,知道DOM不但可以操作html文档,还可以操作XHTML,XML等文档,有着极强的通用性,下面我们通过两个小例子,看看在PHP中是如何用DOM操作XML文档的,和js中差 ...
- jQuery的DOM操作详解
DOM(Document Object Model-文档对象模型):一种与浏览器, 平台, 语言无关的规则, 使用该接口可以轻松地访问页面中所有的标准组件DOM操作的分类 核心-DOM: DOM Co ...
- [译]AngularJS中DOM操作
再翻译一篇干货短文,原文:AngularJS jQuery 虽然Angularjs将我们从DOM的操作中解放出来了,但是很多时候我们还是会需要在controller/view加载之后执行一些DOM操作 ...
随机推荐
- Scratch编程:游泳的火柴人(四)
“ 上节课的内容全部掌握了吗?反复练习了没有,编程最好的学习方法就是练习.练习.再练习.一定要记得多动手.多动脑筋哦~~” 01 — 游戏介绍 这是一款简单的小游戏,实现了一个手绘的火柴人在水里游泳. ...
- Angular 学习笔记 (cdk focus monitor 和一些 focus tabindex 的基础)
更新 : 2019-12-22 focusInitialElementWhenReady 我们经常会调用到这个方法, 它的逻辑是这样 先看有没有 cdkFocusInitial 有的就 focus ...
- Python之(matplotlib、numpy、pandas)数据分析
一.Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形. 它主要用来回事图形,用来展现一些数据,更加直观的展示,让你第一眼就只要数 ...
- SDL 实现多线程 的一些BUG
1. SDL_init() 在多个线程初始化的时候 , 在第二个线程出现SDL_init 崩溃的现象 SDL init 错误码:0XFFFFFFFF 2. SDL_init() 如果只初始化一 ...
- R_数据视觉化处理_中阶_05
条形图:条形图通过垂直或水平的条形展示了类型变量的分布(频数).最简单的用法为:barplot(height),height为矩阵或向量. horiz=TRUE选项:表示水平,在此之前先使用table ...
- vue实现组件切换的两种方式
<!DOCTYPE html> <html> <head> <title>组件的切换</title> <meta charset=&q ...
- CSS重排和重绘
一.什么是重绘Repaint和重排 (回流 reflow) 重绘:当元素的一部分属性发生改变,如外观.背景.颜色等不会引起布局变化,只需要浏览器根据元素的新属性重新绘制 ,使元素呈现新的外观叫做重绘. ...
- sql server split切割字符串
create FUNCTION [dbo].[dnt_split] ( @splitstring varchar(max), @separator CHAR() = ',' ) RETURNS @sp ...
- Session机制详解及分布式中Session共享解决方案
一.为什么要产生Session http协议本身是无状态的,客户端只需要向服务器请求下载内容,客户端和服务器都不记录彼此的历史信息,每一次请求都是独立的. 为什么是无状态的呢?因为浏览器与服务器是使用 ...
- django 发帖时碰到的图片上传
所用编辑器 [wangEditor.js] 图片上传接口 '/edit/image/' 返回内容 参照 https://www.kancloud.cn/wangfupeng/wangeditor3/ ...