关于DOM的一些总结(未完待续......)
DOM
实例1:购物车实例(数量,小计和总计的变化)
这里主要是如何获取页面元素的节点:
document.getElementById("...")
cocument.querySelector("选择器");
通过所需的元素节点,得到我们想要的数据做运算.
实例2:伸缩二级菜单
这里主要是逻辑判断,不同的逻辑给不同的className来控制样式.
需求是:一级菜单可以都关闭,但最多只有一个能打开.(思路是,每次都将所有的一级菜单关闭,然后仅打开当前点击的元素,并且点击同一个还会实现开/关 的来回切换)
DOM
实例1:在备选框中选择国家添加到已选国家框中.(要求实现单选,多选,并且要求两个框中的数据都要进行排序)
这里主要是根据选择,动态的更新两个select中的数据.select有一个onchange事件,专门用于检测被选中的元素,通过sel.selectedIndex返回备选中的option的下标.这帮助我们获得到了我们想要的元素.
要想对页面中的元素排序,只能间接的通过数组的sort方法才能排序.所以要将select中的元素放进数组里.(将select的innerHTML掐头去尾,用</option><option>切割,即可返回一个我们想要的数组,并且根据返回的option下标可知对应数组里的元素,进行相应的操作)最后将对应的数组中的元素更新(就是将数组的元素用join("</option><option>"),再加上头尾即可)到页面上.而且只要是对应数组里有元素,都要排序后在更新到页面上.
在遍历数组的过程中,要反向遍历才可以这样能保证select中option的顺序和对应数组中的数组顺序一致.
实例2:使用自定义属性实现摇号排名
要求:摇号(指定个数并不重复),排序,自定义属性.
生成指定范围内的随机整数,并且不重复.然后将生成的随机数添加到对应页面元素上,然后根据自定义的属性排序,使用sort方法.
实例3:表单元素的验证.
首先表单元素都有两个事件,onfocus和onblur.分别是获得焦点和失去焦点.
根据class来控制不同元素的样式.主要是onblur时对用户输入的内容做验证.
一般分为两步,新建一个正则表达式对象.然后调用test方法验证用户输入的内容是否符合要求.
实例4:在表盘上显示当前时间 => Date相关属性和方法
新建时间对象的三种方式:
新建指定是时间的对象 var t=nwe Date("yyyy/MM/dd hh:mm:ss");
新建当前是时间的对象 var now=now Date();
Date的常用方法:
getTime(); 获得当前对象的毫秒数(1970.01.01)
getHours(); 获得...的小时数值
getMinutes() 获得...的分钟数值
getSeconds() 获得...的秒数值
笔记总结:获取元素节点是什么元素?---->Node.nodeName;
查找页面元素时,我们一般建议使用"选择器"查找.
document.querySelector("选择器");
document.querySelectorAll("选择器");
DOM
实例1:
笔记总结:增加节点:3步
1.创建一个空元素对象
var a=document.createElement("a");
2.添加关键属性
a.href="http://tmooc.com";
3.将新元素添加到指定父元素下
追加:parent.appendChild(a);
插入:parent.insertBefore(a,旧元素);
删除:parent.replaceChild(a,旧元素);
在挂载子元素到DOM树上时,要遵循最少次数的操作DOM树.
有父子元素的关系时最好,没有父子关系时,就建立一个虚拟的fragment虚拟父元素.
frag=document.DocumentFragment();
删除节点:
parent.removeChild(child);
child.parentNode.removeChild(child);
HTML DOM常用对象:
select对象:
属性:
selectedIndex:获得当前选中项的下标--配合onchange属性
options:获得select下所有的option元素;
value:有值,就返回值,没有值就返回内容;
方法:
add(opt);将opt添加到select元素上
remove(i);移除i位置的选项
事件:
onchange
option对象:
创建:var opt=new Option(text,value);
属性:
index:选项在select中的下标
text:代替innerHTML,访问option的内容
From对象:
获取form对象:
var form = document.forms[i/id/name];
属性:
elements:仅包含所有表单元素的集合.
length:就是是element的个数
方法:
submit();
reset();
获取form中的元素?
form.elements[i/id/name]
form.id/name
表单元素:
elem.focus(); 让elem获得焦点
elem.blur (); 让elem失去焦点
***定时器的使用***
这是首次使用面向对象的编程思路来进行编程的.
首先,定义一个我们要操做的对象,然后定义在实现过程中所需要的属性和方法.
在本例中,做的是一个广告的上滑,下滑和自动上滑的效果.对于这种复杂的问题,思路就是做最简单的事,然后从其中找规律,将这些简单的事情拼接成我们所要的功能,最后在做代码的优化和重构.
补充:做动画一定要明确三个量,总距离,总时间,总步数-相关的两个量->步长,步频
首先做上滑,确定三个量.通过步长和步频来控制定时器(周期性).
对应做下滑,最好让代码的结构便于优化.
然后考虑在什么样的情况下,启动一次性的定时器,用于自动向上移动(广告出来),
再考虑动画叠加带来的影响和如何消除动画叠加
DOM
鄙视题: "?username=zhangdong&pwd=123456"-->使用location的search的属性来解析浏览器提交的内容
思路分析:首先使用location.search获得浏览器提交的内容,然后截取出第一个字符(?)外的所有字符.再使用&切割字符串,并保存在数组中,然后对数组中的每个元素再使用"="切割,得到最终的数组.
注意:为对象添加属性时要注意,如果属性值是一个固定的字符串时,可以使用.来添加,如果添加的属性是变量时,则,只能使用obj.[变量]=值的方式来添加.
事件处理:
事件:用户和web页面的交互
event对象:事件发生时,自动创建,封装事件信息的对象.
事件处理函数:事件发生时自动调用执行的函数.
事件处理函数的本质:其实就是节点的一种特殊的属性.只不过赋值为function.
绑定事件处理函数的3种方法:
绑定在元素上, onclick="function";
直接给元素的事件处理函数属性赋值.
未完待续。。。。。。
关于DOM的一些总结(未完待续......)的更多相关文章
- javascript有用小功能总结(未完待续)
		
1)javascript让页面标题滚动效果 代码如下: <title>您好,欢迎访问我的博客</title> <script type="text/javasc ...
 - ASP.NET MVC 系列随笔汇总[未完待续……]
		
ASP.NET MVC 系列随笔汇总[未完待续……] 为了方便大家浏览所以整理一下,有的系列篇幅中不是很全面以后会慢慢的补全的. 学前篇之: ASP.NET MVC学前篇之扩展方法.链式编程 ASP. ...
 - 我的SQL总结---未完待续
		
我的SQL总结---未完待续 版权声明:本文为博主原创文章,未经博主允许不得转载. 总结: 主要的SQL 语句: 数据操作(select, insert, delete, update) 访问控制(g ...
 - virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续)
		
virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续) 第一次接触到 linux,不知道linux的确很强大,然后用virtualbox ...
 - MVC丶       (未完待续······)
		
希望你看了此小随 可以实现自己的MVC框架 也祝所有的程序员身体健康一切安好 ...
 - 一篇文章让Oracle程序猿学会MySql【未完待续】
		
一篇文章让Oracle DB学会MySql[未完待续] 随笔前言: 本篇文章是针对已经能够熟练使用Oracle数据库的DB所写的快速学会MySql,为什么敢这么说,是因为本人认为Oracle在功能性方 ...
 - [python]爬代理ip v2.0(未完待续)
		
爬代理ip 所有的代码都放到了我的github上面, HTTP代理常识 HTTP代理按匿名度可分为透明代理.匿名代理和高度匿名代理. 特别感谢:勤奋的小孩 在评论中指出我文章中的错误. REMOTE_ ...
 - IOS之KVC和KVO(未完待续)
		
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
 - C++语言体系设计哲学的一些随想(未完待续)
		
对于静态类型语言,其本质目标在于恰当地操作数据,得到期望的值.具体而言,需要: (1)定义数据类型 你定义的数据是什么,是整形还是浮点还是字符.该类型的数据可以包含的值的范围是什么. (2)定义操作的 ...
 
随机推荐
- ReactNative入门 —— 动画篇(下)
			
在上篇动画入门文章中我们了解了在 React Native 中简单的动画的实现方式,本篇将作为上篇的延续,介绍如何使用 Animated 实现一些比较复杂的动画. 动画组合 在 Animated 中提 ...
 - MyBatis6:MyBatis集成Spring事物管理(下篇)
			
前言 前一篇文章<MyBatis5:MyBatis集成Spring事物管理(上篇)>复习了MyBatis的基本使用以及使用Spring管理MyBatis的事物的做法,本文的目的是在这个的基 ...
 - 在 Linux 中使用 Eclipse 和 Gnu Autotools 管理 C/C++ 项目
			
在我该系列的之前的所有随笔中,都是采用 Linux 发行版自带的包管理工具(如 apt-get.yum 等)进行软件的安装和卸载,从来没有向大家展示使用源代码自行编译安装软件的方法.但是长期混迹于 U ...
 - ABP(现代ASP.NET样板开发框架)系列之23、ABP展现层——异常处理
			
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之23.ABP展现层——异常处理 ABP是“ASP.NET Boilerplate Project (ASP.NET ...
 - Java基础之IO流
			
很长时间都没有更新了,最近在补充JavaSE的一些细节部分 关于IO流的一些总结 首先要介绍的是File类,File类用于对文件和目录的一些操作 1.创建文件CreateNewFile() 2.对文件 ...
 - 【原】关于Python中setuptools安装的问题
			
在生成package的时候,需要在setup.py中引入setuptools包,可是却报告如下错误: ImportError: No module named setuptools 解决办法就是下载s ...
 - JavaScript权威设计--Window对象之Iframe(简要学习笔记十四)
			
1.Window对象属性的文档元素(id) 如果在HTML文档中用id属性来为元素命名,并且如果Window对象没有此名字的属性,Window对象会赋予一个属性,它的名字是id属性的值,而他们的值指向 ...
 - http程序接口、调用(最入门级,文末附Demo)
			
HTTP协议简介 既然是基于HTTP协议开发,那么就首先要了解下HTTP协议的相关内容- 在TCP/IP体系结构中,HTTP属于应用层协议,位于TCP/IP协议的顶层.浏览Web时,浏览器通过HTTP ...
 - 多线程条件通行工具——CyclicBarrier
			
CyclicBarrier的作用是,线程进入等待后,需要达到一定数量的等待线程后,再一次性开放通行. CyclicBarrier(int, Runnable)构造方法,参数1为通行所需的线程数量,参数 ...
 - Unity iOS混合开发界面切换思路
			
Unity iOS混合开发界面切换思路 最近有很多博友QQ 私信 或则 留言联系我,请教iOS和Unity界面之前相互切换的问题,源代码就不私下发你们了,界面跳转功能的代码我直接贴到下面好了,顺带说i ...