数往知来JavaScript_DOM<十>
一、DOM
1、onclick事件
表示点击
一般用在--》跳转
a标签,希望点击的时候不去跳转,而是做别的事情,并在里面返回一个false
<a href="http://www..." onclick="return false"></a>
--》注册
用法:onclick="js代码";
onclick=方法名;
2、节点中的常用属性
--》nodeType
有12种取值,常用的: 元素 1 ,属性 2 ,文本 3 。
--》nodeName
获得节点的名字
--》nodeValue
获得节点的值
--》childNodes
获得某个节点下的所有子节点,返回一个集合
-->firstChild
获得某个节点下的第一个子节点
-->lastChild
获得某节点下的最后一个字节点
注意:在谷歌浏览器与火狐浏览器中对于节点的描述与IE8的描述不同(IE9以上可能与谷歌的类似)
<ul>
<li></li>
<li></li>
</ul>
IE8在解释该结构的时候认为ul节点的子节点为<li>和<li>,所以IE8描述这个ul下面只有两个li元素子节点
而谷歌、火狐浏览器在解释结构的时候会认为ul和li之间还有一个换行(\n)它也会认为是一个空文字子节点,所以在使用firstChild获取第一个字节点的时候
在谷歌、火狐浏览器上面会得到一个空对象会报错使用的时候需要注意
3、常用方法
---》getElementById
获取指定id所对应的节点
var elements= document.getElementById("123");
<p id="123">
第二段</p>
<p>
---》getElementsByTagName
获取某个元素的节点名字
var ul=document.getElementsByTagName('ul')[0]; 获取整个html页面里的第一ul元素
---》 getAttribute
获取某个元素的指定的属性,返回属性的值
window.onload=function(){
];
var href=node.getAttribute('href');
alert(href);
}
--->setAttribute
修改某个元素的属性值
function attri(){
];
node.setAttribute('href','http://www.baidu.com');
}
javascriptDom_2
一、常见方法
---》getElementById
根据id获得页面上的元素
--》getElementsByTagName
-->getAttribute
-->setAttribute
2、常见属性、
nodeName 返回节点名,返回的均是大写
nodeValue 只针对文本
childNodes
nodeType 1 -- 元素, 2 -- 属性, 3 -- 文本
firstChild
lastChile
-->父节点.firstChild 等价于 父节点.ChildNodes[0]
关于浏览器
IE8对节点与节点的空行和回车,直接忽略,不认为是文本节点
FireFox/Chrome/IE9
将空文本节点也纳入了子节点的范畴
3、验证方法的存在
如果没有这个方法会返回一个null
在js里面null、0、undefiend浏览器在描述的时候都会认为是假(false)
if(!document.getElementsByTagName) return false;当这个方法不存在时返回null,取非就变成true,那么就执行后面的一句话return false回去,就不会再执行后面的,这样遇到一些老的浏览器不认识这个方法也不会报错了,就做到了向后兼容了
//方法体
4、自动创建浏览器中HTML的结构
--》比较老的方法
document.write() 括号内只能写字符串
可以在页面中创建内容
--》<element>.innerHTML
属性,可以用来获得与修改一个标签元素下的所有内容
对于大面积的HTML得生成有很大的优势,因为可以直接处理HTML代码
如何生成一个标签(节点)
--》首先创建一个节点出来
createElement('标签名');
createTextNode('文本内容');
--》设定该节点相关的值与数据
setAttribute('属性',值)
--》添加到父节点上
父节点.appendChild(节点名)
function createDIV(){
var div=document.createElenment('div');
div.setAttribute(');
];
body.appandChild(div);
}
-->insertBefore
父标签.insertBefore(新标签,存在标签);
--》获得父标签
var ul=document.getElementsByTagName('ul')[0];
var parent=ul.parentNode;
用insertBefore方法自己写一个insertAfter方法
//传进来一个新节点和一个已存在的节点,把这个新节点添加到这个以村子节点的后面
function insertAfter (newTag,existTag){
//首先获得这个已存在节点的父节点
var parentTag=existTag.parentNode;
//再判断这个父节点的最后一个节点是否是这个已存在节点,如果是就直接把这个新节点追加到这个父节点的后面
if(parentTag.lastChild==existTag){
parentTag.appendChild(newTag);
}else{
//如果这个已存在节点不是这个父节点的最后一个节点,那么就获得这个已存在节点的下一个节点,把这个新节点插入到下一个节点之前
parent.insertBefore(newTag,existTag.nextSibling);
}
javascriptDom_实现动画效果
一、获得元素的style属性
每一个元素有一个style属性,这个属性不是字符串或数字类型,这个属性是dispHTMLStyle它是一个对象
遍历这个对象 用for-in
-->可以的到一个结论:
可以通过style属性访问到样式 语法为:
样式中的属性名 = 值
样式属性名满足camelCase命名规则
二、两个时间函数
--》setTimeOut
指定多长时间以后,执行一段代码,只执行一次
使用方法:
setTimeOut(js代码段的字符串,时间间隔)
--》setInterVal
指定一段时间,然后没隔这么长时间,执行一次代码
setInterVal(js的代码段的字符串,时间间隔);
--》让计时器停下来
setTimeOut在调用的时候,会返回以后各值
clearTimeOut(刚才返回的值);
setInterVal也是一样
setInterVal(刚才返回的值);
-->写一个移动元素坐标的方法,获得一个元素的ID、和要移动的最终目标位置和移动的时间频率,移动这个元素,达到动画的效果,这个元素要脱离文档流
//
function moveElement(elementId,final_x,final_y,interval){
if(!document.getElementById)return false;
if(!document.getElementById(elementId))return false;
//获得这个元素
var elem=document.getElementById(elementId);
//判断这个元素的left坐标是否初始化了,如果没有初始化值为空,那么就给left坐标赋一个初值
if(!elem.style.left)elem.style.left="0px";
if(!elem.style.top)elem.style.top="0px";
//判断一下上一次方法有没有执行完,如果没有执行完就证明用户的鼠标又指向了另一处了,那么就把上一次的方法触发的方法取消掉
if(elem.stop)clearTimeout(elem.stop);
//获得LEFT的坐标
var x=parseInt(elem.style.left);
//获得top的坐标
var y=parseInt(elem.style.top);
//判断一下如果x y坐标等于目标坐标了,那么就说明元素已经移动到了目标位置了
if(x==final_x&&y==final_y)return;
//判断一下,如果原本的left坐标比目标坐标小,就给left加一个像素的坐标
if(x<final_x){
);
x+=num;
}
//如果原本的top坐标比目标坐标小,就给top加一个像素的坐标
if(y<final_y){
);
y+=num;
}
//如果原本的坐标比目标坐标大,那么就证明当前坐标在目标坐标的右边,给当前坐标减一个像素
if(x>final_x){
);
x-=num;
}
if(y>final_y){
);
y-=num;
}
//把改变之后的left top坐标再重新赋值
elem.style.left=x+"px"; //这些坐标都以px(像素)为单位,赋值的时候要给其加上px单位
elem.style.top=y+"px";
//用setTimeout方法递归调用自己,给一个时间频率,达到缓慢移动的动画效果
elem.stop= setTimeout("moveElement('"+elementId+"',"+final_x+","+final_y+","+interval+")",interval);//setTimeout的第一个参数需要的是js代码段的字符串,这里的move方法的参数如果不带""就会以字符串的形式传过去,而不是作为一个变量了,而move方法的第一个参数也是需要一个字符串,如果只是加上一个“”,那么这个这里的elementId里面的值传到方法里就变成来了moveElement(aaa,...),没有双引号,那就是一个变量了,所以还得把它再加上一个''
}
-->一个改变img的坐标的方法
function preparaPos(){
var elem=document.getElementById('mylist');
var geta=elem.getElementsByTagName('a');
geta[].onmouseover=function(){
moveElement(,,);
}
geta[].onmouseover=function(){
moveElement(,,);
}
geta[].onmouseover=function(){
moveElement(*,,);
}
geta[].onmouseover=function(){
moveElement(*,,);
}
}
--》用insertBefore自己写一个insertAfter方法
function insertAfter(newTag,exsitTag){
var parent=exsitTag.parentNode;
if(parent.lastChild==exsitTag){
parent.appendChild(newTag);
}else{
parent.insertBefore(newTag, exsitTag.nextSibling);
}
}
--》让window.onload可以累加方法
function addOnloadEvent(func){
var oldonload=window.onload;
if(typeof oldonload!='function'){
window.onload=func;
}else{
window.onload=function(){
oldonload();
func();
}
}
}
--》用css添加样式
#myimage{
border:1px;
width:314px;
height:196px;
overflow:hidden;
}
#m2{
position:relative;
left:-314px;
}
li{
margin:2em;
list-style-type:none;
float:left;
}
img{
border:0px;
}
--》HTML页的主代码,把样式和js代码都引进来
<!DOCTYPE html PUBLIC"-//w3c//DTD XHTML 1.0 Transitional.dtd//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml1-transitional.dta"> <html xmlns="www.3c.org/1999/xhtml"> <head> <title></title> <script type="text/javascript" src="./scripts/addOnloadEvent.js"></script> <script type="text/javascript" src="./scripts/moveElement.js"></script> <script type="text/javascript" src="./scripts/preparaPos.js"></script> <script type="text/javascript"> <!-- //addOnloadEvent(createElement); addOnloadEvent(preparaPos); --> </script> <link type="text/css" rel="stylesheet" href="./styles/layout.css" /> </head> <body> <ul id="mylist"> <li> <a title="果果图片1" href="./img/1.jpg"> <img src="./smallphoto/1.jpg" alt="果果图片1" /> </a> </li> <li> <a title="果果图片2" href="./img/2.jpg"> <img src="./smallphoto/2.jpg" alt="果果图片2" /> </a> </li> <li> <a title="果果图片3" href="./img/3.jpg"> <img src="./smallphoto/3.jpg" alt="果果图片3" /> </a> </li> <li> <a title="果果图片4" href="./img/4.jpg"> <img src="./smallphoto/4.jpg" alt="果果图片4" /> </a> </li> </ul> <center><div id="myimage"><img id="m2" src="./img/美术馆.gif" /></div></center> </body> </html>
数往知来JavaScript_DOM<十>的更多相关文章
- 数往知来 CSS<十二>
div+css基础 一.外部样式<!--外部样式可以使网页与样式分离,分工处理 1.写网页,主要提供内容,一般都会有固定的结构,具有id等属性的标签包括特定的内容 2.根据结构写样式另存为css ...
- 数往知来 AJAX Ajax增删改查<十九>
=================================================客户端================================================ ...
- 数往知来 ASP.NET 表单的提交_url传值_重定向 <十八>
一.表单提交时注意 如果是以get方式提交数据的时候,在接收时是用QueryString方式进行接收 如果是以post请求数据时在接收时是用Form进行接收 为什么么要这样做呢?我们用Request[ ...
- 数往知来 asp.net 聊天室问题解决方案<十六>
1:在服务端创建了一个负责监听的sokcet //三个:采用TCP协议. ListenSocket = new Socket(AddressFamily.InterN ...
- 数往知来 ASP.NET_多线程_Socket<十五>
一.ASP.NET B/S 做网站(动态).管理系统(OA,进销存等) C/S--窗体软件 为什么现在很少用C/S做进销存等软件 B/S部署方便 C/S要安装 动态:与服务器(IIS(软件))进 ...
- 数往知来 三层架构 <十四>
三层架构_1 一.三层 就是把程序的各个部分都分离,尽量的底耦合,做到分工明确.责任明确 第一层:Dal 数据访问层 第二层 :Bll 业务逻辑判断层 第三层: UI 界面显示层 比如说数据 ...
- 前端开发中SEO的十二条总结
一. 合理使用title, description, keywords二. 合理使用h1 - h6, h1标签的权重很高, 注意使用频率三. 列表代码使用ul, 重要文字使用strong标签四. 图片 ...
- 谈谈一些有趣的CSS题目(十二)-- 你该知道的字体 font-family
开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...
- 如何一步一步用DDD设计一个电商网站(十)—— 一个完整的购物车
阅读目录 前言 回顾 梳理 实现 结语 一.前言 之前的文章中已经涉及到了购买商品加入购物车,购物车内购物项的金额计算等功能.本篇准备把剩下的购物车的基本概念一次处理完. 二.回顾 在动手之前我对之 ...
随机推荐
- WebMvcConfigurerAdapter
spring Boot 默认的处理方式就已经足够了,默认情况下Spring Boot 使用WebMvcAutoConfiguration中配置的各种属性. 建议使用Spring Boot 默认处理方式 ...
- 总结JavaScript(Iframe、window.open、window.showModalDialog)父窗口与子窗口之间的操作
一.Iframe 篇 //&&&&&&&&&&&&&&&&&&a ...
- Android 如何去除桌面上下边框暗度逐渐变暗的效果
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- 《Linux/Unix系统编程手册》读书笔记 目录
<Linux/Unix系统编程手册>读书笔记1 (创建于4月3日,最后更新4月7日) <Linux/Unix系统编程手册>读书笔记2 (创建于4月9日,最后更新4月10日) ...
- java中final关键字
一.final修饰方法 禁止任何继承类修改它的定义,保证在继承中使方法行为保持不闲并且不会被覆盖. final修饰的方法,同意编译器针对该方法的调用转为内嵌调用.(类似c++ 中的inline?) p ...
- 对于json对像,怎么遍历json对象的所有key,在使用json对象时,如果无法知道key,怎么通过key变量来获取值
对于json对像,怎么遍历json对象的所有key,在使用json对象时,如果无法知道key,怎么通过key变量来获取值?请参阅下面的关键代码: <html> <head> & ...
- Z-偏移量
使用Z-偏移量 在一个三维场景中,我们可以对共面的多边形使用z-偏移量来使它们不再共面.这项技术通常用于在场景中正确的显示阴影.例如,一堵墙上的阴影与这堵墙的深度值是相同的,如果我们先渲染了墙再来渲染 ...
- 3D场景优化
一) 有效的性能评测 对于任何一个3D应用程序来说,追求场景画面真实感是一个无止尽的目标,其结果就是让我们的场景越来越复杂,模型更加精细,这必然给图形硬件带来极大的负荷以致于无法达到实时绘制帧率.因此 ...
- 安装SQL2008的时候 出现System.Configuration.ConfigurationErrorsException: 创建 userSettings/Microsoft.SqlServe
System.Configuration.ConfigurationErrorsException: 创建 userSettings/Microsoft.SqlServer.Configuration ...
- innodb锁之间的兼容性判断
检查锁与锁之间的兼容性 路径:/mysql-5.5.43/storage/innobase/lock/lock0lock.c 实现:见锁的强度比较 row 可理解为 lock 的锁模式 colum ...