原文:一些有用的javascript实例分析(三)

 10 输入两个数字,比较大小
window.onload = function ()
{
var aInput = document.getElementsByTagName("input");
var aSpan = document.getElementsByTagName("span")[0];
for(var i=0;i<aInput.length-1;i++){
aInput[i].onkeyup=function(){
//用空白取代非数字
this.value=this.value.replace(/^\d/,"");
}
aInput[2].onclick=function(){
//若都不输入数字提醒(保证代码的健壮性)
(aInput[0]==""||aInput[1]=="")?alert("please input number"):aSpan.innerHTML=Math.max(aInput[0].value,aInput[1].value)
}
}
11 简易网页时钟
window.onload = function ()
{
var oClock = document.getElementById("clock");
var aSpan = oClock.getElementsByTagName("span");
setInterval(getTimes,1000);
function getTimes(){
//获取当期时间
var date=new Date();
//时分秒组成一个数组
var aDate=[date.getHours(),date.getMinutes(),date.getSeconds()];
for(var i in aDate){aSpan[i].innerHTML=formate(aDate[i])}
}
function formate(a){
//正则匹配的反向引用,a是数字以默认的10进制输出
return a.toString().replace(/^(\d)$/,"0$1") }
12 setTimeout应用
window.onload = function ()
{
var oNav = get.byId("nav");
//获取一级导航栏
var aLi = get.byTagName("li", oNav);
//获取二级导航栏
var aSubNav = get.byClass("subnav", oNav);
var oSubNav = oEm = timer = null;
var i = 0;
//循环一级导航栏
for(i=1;i<aLi.length;i++){
aLi[i].onmouseover=function{
//先隐藏所有的子导航栏
for(i=0;i<aSubNav.length;i++){aSubNav[i].style.display="none";}
//获取该项下的子导航栏
oSubNav=get.byClass("subnav",this)[0];
//获取该项下的指示箭头
oEm=get.byTagName("em",this)[0];
//显示该项下的子导航栏
oSubNav.style.display="block";
//offsetWidth是指对象自身的宽度,整型,单位像素(含边线,如滚动条的占用的宽,值会随着内容的输入而不断改变)
//offsetLeft:获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置
//判断显示区域,this.offsetLeft是相对oNav来说的
oNav.offestWidth-this.offsetLeft>oSubNav.offestWidth?oSubNav.style.left=this.offest+"px":oSubNav.style.right=0;
//style.left,元素必须设置position才有效
oEm.style.left=this.offsetLeft-oSubNav.offsetLeft+50+"px";
clearTimeout(timer);
//阻止事件冒泡,只在li上有用,在nav没用
oSubNav.onmouseout=function(event){
(event||window.event).cancelBubble=true;
//清楚鼠标离开的定时器,做到无缝滑动
clearTimeout(timer);
}
}
aLi[i].onmouseout=function(){
//离开后0.3s去除子导航栏
timer=setTimeout(function(){oSubNav.style.display="none"},300)
}
}
}
13 自动播放效果-幻灯片
window.onload = function ()
{
var oBox = document.getElementById("box");
var aUl = document.getElementsByTagName("ul");
//获取图片列表
var aImg = aUl[0].getElementsByTagName("li");
//获取按钮列表
var aNum = aUl[1].getElementsByTagName("li");
var timer = play = null;
var i = index = 0;
//切换按钮
for(i=0;i<aNum.length;i++){
aNum[i].index=i;
aNum[i].onmouseover=function(){
show(this.index);
}
}
//鼠标滑过关闭定时器
oBox.onmouseover=function(){
clearInterval(play);
}
//鼠标离开启动自动播放
oBox.onmouseout=function(){
autoPlay();
}
//自动播放
function autoPlay(){
play=setInterval(function(){
//图片索引每两秒增加一次
index++;
//当大于图片数目时,归零。达到无缝滚动
index>=aImg.length&&(index=0)
show(index);
},2000)
}
autoPlay();
//图片切换,淡入淡出
function show(a){
index=a;
var alpha=0;
for(var i=0;i<aNum.length;i++){
//按钮样式
aNum[i].className="";}
aNum[index].className="current";
clearInterval(timer);
for(var i=0;i<aImg.length;i++){
//其他图片的透明度最高,即不显示
aImg[i].style.opacity = 0;//w3c
aImg[i].style.filter = "alpha(opacity=0)";//ie
}
timer=setInterval(function(){
alpha+=2//0.02秒加2
//若大于100,取100
alpha>100&&(alpha=100);
aImg[index].style.opacity = alpha / 100;
aImg[index].style.filter = "alpha(opacity = " + alpha + ")";
//当达到100,清楚定时器
alpha == 100 && clearInterval(timer)
},20) }
}
 14 拖拽
var zIndex = 1;
window.onload = function ()
{
var oDrag1 = document.getElementById("drag1");
var oDrag2 = document.getElementById("drag2");
drag(oDrag1);
drag(oDrag2);
};
function drag(oDrag){
var disX=disY=0;
oDrag.onmusedown=function(event){
var event=event||window.event;
disX=event.clientX-this.offsetLeft;
disY=event.clientY-this.offestTop;
var oTemp=document.createElement("div");
oTemp["id"]="temp";
oTemp.style.left=this.currentStyle?this.currentStyle["left"]:getComputeStyle(this,null)["left"];
oTemp.style.top = this.currentStyle ? this.currentStyle["top"] : getComputedStyle(this, null)["top"];
oTemp.style.zIndex=zIndex++;
document.body.appendChild(oTemp);
document.onmouseover=function(event){
var event = event || window.event;
var il=event.clientY-disX;
var iT=event.clientY-disY;
var maxL = document.documentElement.clientWidth - oDrag.offsetWidth;
var maxT = document.documentElement.clientHeight - oDrag.offsetHeight
iL <= 0 && (iL = 0);
iT <= 0 && (iT = 0);
iL >= maxL && (iL = maxL);
iT >= maxT && (iT = maxT);
oTemp.style.left=iL+"px";
oTemp.style.top=iT+"px";
return false;
};
document.onmouseup = function ()
{
document.onmousemove = null;
document.onmouseup = null;
oDrag.style.left = oTemp.style.left;
oDrag.style.top = oTemp.style.top;
oDrag.style.zIndex = oTemp.style.zIndex;
document.body.removeChild(oTemp);
oDrag.releaseCapture && oDrag.releaseCapture()
}; this.setCapture && this.setCapture();
return false
}
}

一些有用的javascript实例分析(三)的更多相关文章

  1. 一些有用的javascript实例分析(二)

    原文:一些有用的javascript实例分析(二) 5 求出数组中所有数字的和 window.onload = function () { var oBtn = document.getElement ...

  2. 一些有用的javascript实例分析(一)

    原文:一些有用的javascript实例分析(一) 本文以http://fgm.cc/learn/链接的实例索引为基础,可参见其实际效果.分析和整理了一些有用的javascript实例,相信对一些初学 ...

  3. C#保留2位小数几种场景总结 游标遍历所有数据库循环执行修改数据库的sql命令 原生js轮盘抽奖实例分析(幸运大转盘抽奖) javascript中的typeof和类型判断

    C#保留2位小数几种场景总结   场景1: C#保留2位小数,.ToString("f2")确实可以,但是如果这个数字本来就小数点后面三位比如1.253,那么转化之后就会变成1.2 ...

  4. Linux Kernel PANIC(三)--Soft Panic/Oops调试及实例分析【转】

    转自:https://blog.csdn.net/gatieme/article/details/73715860 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原 ...

  5. Linux I2C设备驱动编写(三)-实例分析AM3359

    TI-AM3359 I2C适配器实例分析 I2C Spec简述 特性: 兼容飞利浦I2C 2.1版本规格 支持标准模式(100K bits/s)和快速模式(400K bits/s) 多路接收.发送模式 ...

  6. 【转】Linux I2C设备驱动编写(三)-实例分析AM3359

    原文网址:http://www.cnblogs.com/biglucky/p/4059586.html TI-AM3359 I2C适配器实例分析 I2C Spec简述 特性: 兼容飞利浦I2C 2.1 ...

  7. [转载]JavaScript内存分析

    https://github.com/CN-Chrome-DevTools/CN-Chrome-DevTools/blob/master/md/Performance-Profiling/javasc ...

  8. javaScript高程第三版读书笔记

    看完<dom编程艺术>现在准备读进阶版的js高程了,由于篇幅较长,所以利用刚看完<dom编程艺术>学到的知识写了段JavaScript代码,来折叠各章的内容.并且应用到了< ...

  9. JavaScript中的三种弹出对话框

    学习过js的小伙伴会发现,我们在一些实例中用到了alert()方法.prompt()方法.prompt()方法,他们都是在屏幕上弹出一个对话框,并且在上面显示括号内的内容,使用这种方法使得页面的交互性 ...

随机推荐

  1. win32加载图片获得像素值

    在写光栅渲染器时,需要加载图片获得像素以便进行纹理插值,试了几种方法发现下面这种比价简单,效率也可以接受 Texture2D是我自己定义的类,其中m_pixelBuffer是一个动态二维数组,每个元素 ...

  2. 快速排序:升序+降序----java实现

    快速排序思路:先把第一个元素令为low下标,最后一个为high下标.并把第一个元素令为temp来作为标准元素.以标准元素来调整数组,使比标准元素小的都在标准元素前,比标准元素大的都在标准元素后.这样一 ...

  3. php 两个文件之间的相对路径的计算方法

    php 两个文件之间的相对路径的计算方法 比如: 文件A 的路径是 /home/web/lib/img/cache.php 文件B的路径是 /home/web/api/img/show.php 那么. ...

  4. java显示本地磁盘所有盘符,显示桌面路径

    import java.io.File; import javax.swing.filechooser.FileSystemView; /** 显示本地磁盘根盘符,显示桌面路径 */ public c ...

  5. linuxIO刷新机制fsync和fdatasync详细解释

    前言: Linux,unix在内核中设有 缓冲区快速缓冲或页面快速缓冲.大多数磁盘I/O都通过缓冲进行,採用延迟写技术. sync:将全部改动过的快缓存区排入写队列.然后返回.并不等待实际写磁盘操作结 ...

  6. Java一流的施工顺序

    1.没有对象的构造 public class Test { public static int k = 0; public static int n = 99; public static int i ...

  7. 左右AjaxFileUpload背景返回Json治

    项目中用到图片的无刷新上传,因此想到用ajaxUpLoadFile来解决. 第一步,先在上传图片的页面引入你下载到本地的ajaxfileupload.js文件. 文件下载地址:http://downl ...

  8. rest服务器

    一个轻量级rest服务器   RestServer直接发布数据库为json格式提供方法 RestSerRestServer直接发布数据库为json格式 支持MySQL,SqlServer,Oracle ...

  9. SQL Server 2008性能故障排查(四)——TempDB

    原文:SQL Server 2008性能故障排查(四)--TempDB 接着上一章:I/O TempDB: TempDB是一个全局数据库,存储内部和用户对象还有零食表.对象.在SQLServer操作过 ...

  10. 将android界面背景设置为黑色

    屏幕背景设置为黑色的几种方式: 新建项目时候 第二次next之后(不同sdk版本号可能不同),Background Color项点击可选. 开公布局文件,选择视图查看 就是下边二个选项卡中的第一个(G ...