JavaScript学习(三)深入学习

(一)函数传参:

        向函数传不定参(使用arguments数组)

        例一:求和

<script type="text/javascript">
     function sum()
     {
         var result=0;
         for(var i=0;i<arguments.length;i++)
         {
             result+=arguments[i];
         }
         return result;
     }
     alert(sum(12,35,56));
</script>

      例二:类似css获取行间样式函数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<script type="text/javascript">
    function css(obj,name,value)
    {
        if(arguments.length==2)     //如果传入两个参数,则获取属性值
        {
            return obj.style[name];
        }
        else{                                    //如果传入三个参数,则修改属性值
            obj.style[name]=value;
            return obj['style'][name];
        }
    }
   window.onload=function()
   {
         var oh1=document.getElementById('h1');
      //   alert(css(oh1,'font-size'));                //输出h1标签内的字体大小
         alert(css(oh1,'font-size','25px'));        //修改h1标签内的字体大小并输出
   }
</script>
<body>
    <h1 id="h1" style="font-size:15px;">你好</h1>
</body>
</html>

     例三:获取非行间样式函数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<style type="text/css">
    h1{font-size: 20px;}
</style>
<script type="text/javascript">
    function getStyle(obj,name)
    {
        if(obj['currentStyle'])     //如果能够使用currentStyle获取样式(低版本的火狐,谷歌浏览器不能获取,不兼容)
        {
            return obj['currentStyle'][name];
        }
        else{                                  
            
            return getComputedStyle(obj,null)[name];        //通过该函数获取样式(低版本IE浏览器不能获取,不兼容)
        }
    }
   window.onload=function()
   {
         var oh1=document.getElementById('h1');
         alert(getStyle(oh1,"font-size"));        //不能获取符合属性(如font,background等)
   }
</script>
<body>
    <h1 id="h1" >你好</h1>
</body>

(二)数组:

    1,length可以设置值,也可以获取数组的长度。当数组的length为6,赋值为3,则数组的内容会变成三个元素。

    2,添加元素,删除元素:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<style type="text/css">
    h1{font-size: 20px;}
</style>
<script type="text/javascript">
var array=['张三','李四','王五','赵六','钱七','孙九'];
alert("数组元素:"+array);                                 //array=['张三','李四','王五','赵六','钱七','孙九']
array.length=3;
alert("修改length后结果:"+array);                          //array=['张三','李四','王五']
array.push('赵六','钱七');     //push()在数组的尾部添加元素
alert("添加数组尾部元素(赵六,钱七)后结果:"+array);                         //array=['张三','李四','王五','赵六','钱七']
array.pop('钱七');                 //pop()删除数组的尾部元素
alert("删除数组尾部元素(钱七)后结果:"+array);                         //array=['张三','李四','王五','赵六']
array.unshift('孙九','钱七');      //unshift()在数组的头部添加元素
alert("添加数组头部部元素(孙九,钱七)后结果:"+array);                             //array=['孙九','钱七','张三','李四','王五','赵六']
array.shift('孙九');                     //shift()删除数组的头部元素
alert("删除数组头部元素(钱七)后结果:"+array);                             //array=['钱七','张三','李四','王五','赵六']
</script>
<body>

</body>
</html>

  3,用split添加,删除,修改元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<style type="text/css">
    h1{font-size: 20px;}
</style>
<script type="text/javascript">
var array=['张三','李四','王五','赵六','钱七','孙九'];
alert("数组元素:"+array);
array.splice(3,2);                                                     //splice(起点,长度),array.splice(3,2)是从array[3]开始删除2个元素
alert("用splice删除(赵六,钱七):"+array);           //array=['张三','李四','王五','孙九']
array.splice(2,0,'赵六','钱七');                              //splice(起点,长度为0,添加的元素)
alert("用splice在王五前添加(赵六,钱七):"+array);    //array=['张三','李四','赵六','钱七','王五','孙九']
array.splice(2,3,'王五','赵六','钱七');                   //splice(起点,长度为n,修改的n个元素)
alert("用splice将('赵六','钱七','王五')修改为('王五','赵六','钱七'):"+array);     //array=['张三','李四','王五','赵六','钱七','孙九']
</script>
<body>

</body>
</html>

     4,连接两个数组:数组1.concat(数组2)

  

     5,数组元素输出添加间隔符:数组名.join('间隔符')

     6,对数组元素排序:sort(fun):fun必须是函数,规定排序顺序,可以为空。当为空时,按照ASCII字符顺序排序。排序会修改原数组元素顺序。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<style type="text/css">
    h1{font-size: 20px;}
</style>
<script type="text/javascript">
var array1=['张三','李四','王五'];
var array2=['赵六','钱七','孙九'];
/*
连接两个数组操作*/
var array=array1.concat(array2);    //前数组.concat(后数组)   array1.concat(array2)将array1,array2连接,array1在前,array2在后
alert(array);                                      //array=['张三','李四','王五','赵六','钱七','孙九']
/*
数组元素输出添加间隔符操作:
*/
alert(array.join('->'));     //输出结果:张三->李四->王五->赵六->钱七->孙九
/*
数组元素排序(任何语言,数字都能升序排序):
*/
//array=['zhangsan','lisi','wangwu','zhaoliu','qianqi','sunjiu'];
//array=[111,1,11,12,7,123,89];
if(!isNaN(parseInt(array[0])))     //如果数组中存的是数字
{
    array.sort(function(n1,n2){return n1-n2;});
}
else{
    array.sort(function(n1,n2){return n1.localeCompare(n2);});                   //如果数组中存的是英文单词或其他语言
     //如果是中文,则按照拼音首字母a->z排序                                       //n1.localeCompare(n2)排序非英语类语言     
}         
alert(array);
</script>
<body>

</body>
</html>
function(n1,n2)
{
if(n1>n2) return 负数;
else if(n1<n2) return 正数;
else return 0;
}




(三)定时器:
1,开始定时器:
tim1=setInterval(函数名fun,n):每个n毫秒执行一次函数fun,循环执行无数次
tim2=setTimeout(函数名fun,n):间隔n毫秒执行一次函数fun,只执行一次
2,关闭定时器:
clearInterval(tim1):关闭定时器time1
clearTimeout(time2):关闭定时器time2
3,获取现在的时间:var date=new Date(); date.getHours():date.getMinutes():date.getSeconds()获取n点n分n秒

         

          #获取的月份要+1;获取的星期:0代表周天,1代表周一...

          例如:显示特色时钟(万年历):

            


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<style type="text/css">
  #time img{
    width: 50px;
    height: 50px;
   }
   #year img{
    width: 30px;
    height: 30px;
   }
    #time{   
    width: 500px;
    height: 60px;   
        font-size: 50px;
        color: black;
    }
    #year{
        width: 600px;
        height: 60px;
        font-size: 20px;
        color: black;
    }
</style>
<script type="text/javascript">
    function toTime(n)
    {
        if(n<10)
            return '0'+n;
        else
            return ''+n;
    }
    function toYear(years,months,days)
    {
        var ymd=' ';
        if(months>10&&days>10){
            ymd=years.toString()+months.toString()+days.toString();
        }
        else if(months<10&&days>10){
            ymd=years.toString()+'0'+months+days.toString();
        }
        else if(months>10&&days<10){
            ymd=years.toString()+months.toString()+'0'+days;
        }
        else{
            ymd=years.toString()+'0'+months+'0'+days;
        }
        return ymd;
    }
    window.onload=function()
    {
        showTime();
        setInterval(showTime,1000);
        function showTime()
        {
            var year=document.getElementById('year');
            var time=document.getElementById('time');
            var imgTime=time.getElementsByTagName('img');
            var imgYear=year.getElementsByTagName('img');
            var date=new Date();
            var time=toTime(date.getHours())+toTime(date.getMinutes())+toTime(date.getSeconds());
            var year=toYear(date.getFullYear(),date.getMonth()+1,date.getDate());
            var week=date.getDay().toString();
            for(var i=0;i<8;i++)
            {
                imgYear[i]['src']="./img/数字"+year.charAt(i)+".png";
            }
            imgYear[8]['src']="./img/星期"+week+".png";
            imgYear[8]['style']['width']="50px";
            imgYear[8]['style']['height']="50px";
            for(var i=0;i<imgTime.length;i++)
            {
                imgTime[i]['src']="./img/数字"+time.charAt(i)+".png";
            }          
        }

    }
</script>
<body>
  <div id="year">
         <img src="./img/数字0.png">
         <img src="./img/数字0.png">
         <img src="./img/数字0.png">
         <img src="./img/数字0.png">&nbsp;<img src="./img/数字0.png">
         <img src="./img/数字0.png">&nbsp;<img src="./img/数字0.png">
         <img src="./img/数字0.png">&nbsp;<img src="./img/星期1.png">
  </div>
  <div id="time">
     <img src="./img/数字0.png">
    <img src="./img/数字0.png">&nbsp;:
    <img src="./img/数字0.png">
    <img src="./img/数字0.png">&nbsp;:
    <img src="./img/数字0.png">
    <img src="./img/数字0.png">     
  </div>

</body>
</html>
      4,获取div的左边距,上边距,宽度,高度:
div.offsetLeft div.offsetTop div.offsetwidth div.offsetheight
5,实现内容向左滚动和向右滚动

           

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<style type="text/css">
*{
    margin: 0;
    padding: 0;
}
    img{
        width: 62px;
        height: 100px;
    }
    #div3{
        width: 248px;
        height: 100px;
        margin: 20px auto;
        position: relative;       /*设置为相对定位*/
        background-color: red;
        overflow: hidden;    /*设置div框外的元素看不见*/
        
    }
    #div4{
        width: 197px;
        height: 30px;
        margin: 150px 44% 0px ;        
    }
    #div5{
        width: 197px;
        height: 30px;
        margin: 0 44% 0px ;    
    }
    #div3 ul{
                       left: 0;
                       top: 0;
                       position: absolute;    /*设置为绝对定位,移动整个ul*/
    }
    #div3 ul li{
                    width: 62px;
                    height: 100px;
                    float: left;
                    list-style: none;                /*  将li内容之前的点去掉  */
    }
</style>
<script type="text/javascript">
window.onload=function()
{
    var div3=document.getElementById('div3');
    var div4=document.getElementById('div4');
    var div5=document.getElementById('div5');
    var inl=document.getElementById('inl');
    var btl=document.getElementById('btl');
    var inr=document.getElementById('inr');
    var btr=document.getElementById('btr');
    var ul=div3.getElementsByTagName('ul')[0];
    var li=ul.getElementsByTagName('li');
    var speed=0;
    btl.onclick=function()                     /*如果输入速度,点击向左移动*/
    {
         speed=parseInt(inl.value);
         if(isNaN(speed))
            alert('请输入向左移动速度');
         else        
             speed=-speed;     
                      move();    
                      inr.value=0;
    }
     btr.onclick=function() 
     {
         speed=parseInt(inr.value);
         if(isNaN(speed))
            alert('请输入向右移动速度');
         else             
                      move();
                      inl.value=0;
     }
    ul.innerHTML=ul.innerHTML+ul.innerHTML;        /*设置ul中有两倍个ui(4*2个li)*/
    ul.style.width=li[0].offsetWidth*li.length+'px';       /*设置ul的宽为n个li的宽相加*/
    function move()
            {
                   if(ul.offsetLeft<-(ul.offsetWidth/2))                     /*如果ul走完(ul的左边距小于半个ul的宽4个li),则将ul拖回原处*/
                        ul.style.left='0';
                else if(ul.offsetLeft>0)
                    ul.style.left=-ul.offsetWidth/2+'px';
                else
                    ul.style.left=ul.offsetLeft+speed+'px';

            }
            var timer=setInterval(move,30);
            div3.onmouseover=function()            /*当鼠标移入滚动内容,则停止滚动*/
            {
                    clearInterval(timer);
            }
            div3.onmouseout=function()             /*当鼠标移出滚动内容,则继续滚动*/
            {
                timer=setInterval(move,30);
            }

}
</script>
<body>
    <div id="div4">

        <input type="text" id="inl">

        <input type="button" value="向左走" id="btl">
                    
    </div>
    <div id="div3" >
        
      <ul>
          <li><img src="./img/数字1.png"></li>
          <li><img src="./img/数字2.png"></li>
          <li><img src="./img/数字3.png"></li>
          <li><img src="./img/数字4.png"></li>
      </ul>
                   
    </div>
    <div id="div5">
        <input type="text" id="inr">

        <input type="button" value="向右走" id="btr">
    </div>    
</body>
</html>

原文地址:https://www.cnblogs.com/lq13035130506/p/12204716.html