js一起学10:DOM高级——offsetParent、scrollBottom、焦点事件、image对象和toFixed、表单...
例子:
<style>
*{margin:0; padding:0;}
#div1{width:500px; height:400px; background:#ccc; margin:10px; padding:10px;}
#div2{width:400px; height:300px; background:yellow; margin:10px;padding:10px; position:absolute; top:40px; left:40px;}
#div3{width:300px; height:200px; background:red; margin:10px;}
</style>
var oDiv3 = document.getElementById('div3');
var oDiv2 = oDiv3.offsetParent;
var j3 = oDiv3.offsetTop; //oDiv3有10px的margin,其有定位的父级oDiv2有10px的padding,所以是20px
var j2= oDiv2.offsetTop; //为啥是50px呢?因为oDiv2是绝对定位,所以位置和oDiv1没有关系,所以offsetTop是top的10px加上margin的10px
alert(j2+j3);
三、scrollBottom=scrollTop+clientHeight if(top<scrollBottom){ 显示 }例:图片延时加载
function getPos(obj){
var t =0;
var l =0;
while(obj){
t+=obj.offsetTop;
l+=obj.offsetLeft;
obj=obj.offsetParent;
}
return {top:t,left:l};
}
window.onload=function(){
var aImg = document.getElementsByTagName('img');
loadImgs();
window.onscroll=window.onresize=loadImgs;
function loadImgs(){
for(var i=0;i<aImg.length;i++){
var top = getPos(aImg[i]).top;
var scrollTop = document.documentElement.scrollTop||document.body.scrollTop;
var scrollBottom = scrollTop+document.documentElement.clientHeight;
if(top<scrollBottom){
aImg[i].src=aImg[i].getAttribute('_src');
}
}
};
};
四、获取元素 getElementsByTagName getElementsByName getElementsByClassName children(不是真正的数组,用不了数组的函数) 五、scrollHeight---获取内容的高度 var oDiv = document.getElementById('box'); alert(oDiv.scrollHeight); alert(document.body.scrollHeight); 例子:瀑布流 function rnd(n,m){ return parseInt(n+Math.random()*(m-n)); } function createLi(){ var oLi=document.createElement('li'); oLi.style.background='rgb('+rnd(0,256)+','+rnd(0,256)+','+rnd(0,256)+')'; oLi.style.height=rnd(120,350)+'px'; return oLi; } window.onload=function(){ var aUl=document.getElementsByTagName('ul'); create(); function create(){ for(var i=0;i<20;i++){ var oLi=createLi(); var arr=[]; for(var j=0;j<aUl.length;j++){ arr.push(aUl[j]); } arr.sort(function(oUl1,oUl2){ return oUl1.offsetHeight-oUl2.offsetHeight; }); arr[0].appendChild(oLi); } } window.onscroll=function(){ var height=document.body.scrollHeight; //内容高度 var scrollTop=document.documentElement.scrollTop||document.body.scrollTop; if(scrollTop>=height-document.documentElement.clientHeight-500){ setTimeout(function(){ create(); },300); } } } 六、焦点事件 1. onfocus 获取焦点事件 onblur 失去焦点 2. focus() 设置焦点 blur() 取消焦点 输入框自动获取焦点 window.onload=function(){ var oInp=document.getElementsByTagName('input')[0]; var oS=document.getElementsByTagName('span')[0]; oInp.onfocus=function(){ oS.style.display='none'; } oInp.onblur=function(){ if(oInp.value==''){ oS.style.display='block'; } } oS.onclick=function(){ oS.style.display='none'; oInp.focus(); } } 七、tofixed 保留几位小数 alert(0.55555555.toFixed(0)); 八、image对象 new Image(); onload---当图片加载完成时 onerror---当加载失败时 例子:进度条 window.onload=function(){ var oDiv1=document.getElementById('div1'); var oDiv2=document.getElementById('div2'); var count=0; for(var i=0;i<77;i++){ var oImg=new Image(); oImg.onerror=function(){ alert(this.src+'加载失败'); } oImg.onload=function(){ count++; var scale=count/77; oDiv2.innerHTML=(scale*100).toFixed(2)+'%'; oDiv2.style.width=oDIv1.offsetWidth*scale+'px'; if(count==77){ alert('加载完成'); } } oImg.src="http://www.zhinengshe.com/works/3525/img/"+i+".jpg"; } } <div id="div1"> </div id="div2"></div> </div。 九、表单 1. 把数据提交给服务器 action 地址 name 名字 submit 提交 id是给前台用的。name给后台用的。 name可以重复 getElementsByName 通过name获取一组元素 2. method----提交方式 (1)get 数据在url中(适合分享) 默认的 容量很小 32k 不安全 post 数据不在url中(无法分享) 容量非常大 1G 相对安全http://tieba.baidu.com/home/main?un=%E8%90%8C%E9%A6%85%E5%B0%8F%E6%B1%A4%E5%9C%86&ie=utf-8&fr=pb
https security---安全http协议 (花钱)
- JavaWeb - js函数,js事件,js的dom对象,document对象,innerHTML,表单提交/校验,json,js解析json
- 【js】【事件驱动】【Dom元素节对象点绑定事件的3种方式】
- js高级编程------------使用prototype仿java对象实现表单验证
- Html5之高级-11 拖放API (拖放事件、dataTransfer对象、setDragImage方法)
- js 实现图片预加载 (js操作 Image对象属性complete ,事件onload 异步加载图片)
- js 实现图片预加载(js操作 Image对象属性complete ,事件onload 异步加载图片)
- js 实现图片预加载 (js操作 Image对象属性complete ,事件onload 异步加载图片)
- js 实现图片预加载 (js操作 Image对象属性complete ,事件onload 异步加载图片)
- JS高级程序设计10-DOM
- DOM事件对象【JS】
- JS事件--事件对象之DOM中的事件对象
- js-事件2_键盘事件 oDiv.style.left=oDiv.offsetLeft-10+"px";
- JS-进阶(对象、BOM、DOM、事件)
- js 实现图片预加载 (js操作 Image对象属性complete ,事件onload 异步加载图片)
- Jquery如何序列化form表单数据为JSON对象 C# ADO.NET中设置Like模糊查询的参数 从客户端出现小于等于公式符号引发检测到有潜在危险的Request.Form 值 jquery调用iframe里面的方法 Js根据Ip地址自动判断是哪个城市 【我们一起写框架】MVVM的WPF框架(三)—数据控件 设计模式之简单工厂模式(C#语言描述)
- 关于js事件对象(DOM中的事件对象、IE中的事件对象、跨浏览器的事件对象)的详解
- JavaScript高级程序设计学习笔记--事件(二)(事件对象--DOM中的事件对象/IE中的事件对象/跨浏览器的事件对象)
- JS 对象与事件DOM
- js 实现图片预加载 (js操作 Image对象属性complete ,事件onload 异步加载图片)
- js 获取焦点事件所在的对象