关于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";

直接给元素的事件处理函数属性赋值.

未完待续。。。。。。

时间: 2024-10-23 01:42:29

关于DOM的一些总结(未完待续......)的相关文章

React v16-alpha 源码简读【未完待续】

一.物料准备 1.克隆react源码, github 地址:https://github.com/facebook/react.git 2.安装gulp 3.在react源码根目录下: $npm install $gulp default (建议使用node 6.0+) gulp将文件处理在根目录下的build文件夹中,打开build查看react的源码,结构清晰,引用路径明了 二.从生成 virtual dom 开始 react 生成一个组件有多种写法: es 5下:var Cp=React.

whatweb.rb 未完待续

#!/usr/bin/env ruby #表示ruby的执行环境 =begin # ruby中用=begin来表示注释的开始 .$$$ $. .$$$ $. $$$$ $$. .$$$ $$$ .$$$$$$. .$$$$$$$$$$. $$$$ $$. .$$$$$$$. .$$$$$$. $ $$ $$$ $ $$ $$$ $ $$$$$$. $$$$$ $$$$$$ $ $$ $$$ $ $$ $$ $ $$$$$$. $ `$ $$$ $ `$ $$$ $ `$ $$$ $$' $ `$

把握linux内核设计思想系列(未完待续......)

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 把握linux内核设计思想(一):系统调用 把握linux内核设计思想(二):硬中断及中断处理 把握linux内核设计思想(三):下半部机制之软中断 把握linux内核设计思想(四):下半部机制之tasklet 把握linux内核设计思想(五):下半部机制之工作队列及几种机制的选择 把握linux内核设计思想(六):内核时钟中断 把握linux内核设计思想(七):内核定时器和

[译]App Framework 2.1 (1)之 Quickstart (未完待续)

最近有移动App项目,选择了 Hybrid 的框架Cordova  和  App Framework 框架开发. 本来应该从配置循序渐进开始写的,但由于上班时间太忙,这段时间抽不出空来,只能根据心情和兴趣,想到哪写到哪,前面的部分以后慢慢补上. App Framework 前生是是叫 jqMobi 注意大家不要和 jQuery Mobile 混淆了,它们是两个不同的框架,一开始我还真混淆了0.01秒. 这里我先翻译一下Quickstart 部分,一是自己工作上用的上,二是也想顺便练练英文,最关键

数据结构与算法之--高级排序:shell排序和快速排序【未完待续】

高级排序比简单排序要快的多,简单排序的时间复杂度是O(N^2),希尔(shell)排序的是O(N*(logN)^2),而快速排序是O(N*logN). 说明:下面以int数组的从小到大排序为例. 希尔(shell)排序 希尔排序是基于插入排序的,首先回顾一下插入排序,假设插入是从左向右执行的,待插入元素的左边是有序的,且假如待插入元素比左边的都小,就需要挪动左边的所有元素,如下图所示: ==> 图1和图2:插入右边的temp柱需要outer标记位左边的五个柱子都向右挪动 如图3所示,相比插入排序

git个人使用总结 —— idea命令行、撤销commit (未完待续)

近期在使用git,最开始在idea界面操作,后来要求用命令行.刚开始还不是很习惯,感觉很麻烦,用了几天后感觉爽极了! 其实git的命令也不是很多,熟悉一段时间就差不多能顺利使用了.使用过程中遇到了各种各样的问题,有些小问题就在这里集中总结一下. 1.idea命令行.git安装后就自带终端git bash,使用起来很方便.但是用idea开发,开发后还要在相应文件夹下打开git bash很麻烦.其实idea也带有终端terminal,在最下方可以找到,在这里就可以执行命令.但是如果是默认方式安装的g

Unity3D快捷键 未完待续

Unity3D 点选Object+F Object在当前视角居中 CTRL+1/2 Scene/Game视图的切换 MonoDevelop CTRL+K  删除光标所在行的该行后面的代码 CTRL + ALT +C  注释/不注释该行 CTRL+ DOWN  像鼠标滚轮一样向下拖 CTRL + UP 像鼠标滚轮一样向上拖 CTRL + F  查找该脚本 CTRL + SHIFT + F 查找全部脚本 CTRL + H 替换代码 CTRL + SHIFT +W 关掉所有脚本 Unity3D快捷键

模板区域[未完待续](会定期的更新哦(有时间就更了))

写这个博客目的就是为了记录下学过的模板方便我这焫鷄复习吧//dalao们绕道 近期学的: (1)来自机房学长jjh大神教的求1~n的所有最小素因数和加上本焫鷄的批注 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath>//求1~n的最小质因数 using namespace std; const int MAXN=1e6+

NOIP2016 那些我所追求的 [未完待续]

人生第一场正式OI [Day -1] 2016-11-17 期中考试无心插柳柳成荫,考了全市第2班里第1(还不是因为只复习了不到两天考试),马上请了一个周的假准备NOIP(数学生物还是回去上课的) 灰哥跟我一块,tlq考吃了没请假 正好下个周老班出去学习了不害怕 星期4所有人都请假了,漫无目的地复习了一天题,参考题解补了一场模拟赛 晚上灰哥因为住宿直接回家了,还让我给XXX送纸条 SD NOIP的群好多人直播,我们就直播了个国际象棋(竟然有人说八皇后,我只升变了两个兵称为皇后),然而竟然默认开启