zoukankan      html  css  js  c++  java
  • 第一节 JavaScript概述

    第一节 JavaScript概述

    JavaScript:其实就是对HTML+CSS静态页面进行样式修改,使其实现各种动态效果。

    编写JS脚本基本步骤:

      1. HTML+CSS静态布局;

      2. 确定要修改的属性;

      3.确定用户做哪些操作,即事件(产品样式);

      4.在事件中,用JS来修改页面元素的样式。

    特效实现原理:响应用户操作,对页面元素(标签)进行某种动态效果的实现。

    函数简介:

      基本形式为“function 函数名(){……}”,把JS从标签中放入函数里,类似与CSS中的class

      函数的定义和调用:

        一般函数定义:function 函数名(){……};    n=函数名;//即为函数调用,不需加“()”

        匿名函数定义:var n=……;    n=function(){……};//本身也是一种函数调用

      document。getElementById();:不会出现直接引用“id”而出现的错误

      网站更换皮肤:即把引入的CSS样式改变了,如CSS1样式是第一种皮肤,CSS2是另一种皮肤一样。

      HTML文件便签中怎么写特效,JS中特效就怎么写,但有一特例,HTML中的class必须在JS中写className

      函数什么时候该传参数:当函数里有定不下来的变量是需要传参

      在函数中,style添加的样式都是添加在便签内的,称为行间样式(而行间样式的优先级最高),所以在编写程序的时候,要么只修改style,要么只修改class。

      提取事件:为元素添加事件,事件和其他属性一样,可以用js添加,如onload(),如下:当

        <script>

          var oBtn=document.getElementById('btn1');

          oBtn.onclick=function(){alert('a');};

        </script>

      在标签<body></body>标签内时,函数正确运行,但是 如果上述代码放在<head></head>标签内时就会报错,因为JS(与Python类似)是解释性语言,即读一行、执行一行,所以函数调用只能写在函数下面,否则就会报错,此时的解决办法为:    

        <script>

          window.onload=function(){

            var oBtn=document.getElementById('btn1');

            oBtn.onclick=function(){alert('a');};

          };      

        </script>

      行为、样式、结构三者分离:即JS文件、CSS文件、HTML文件分开

      获取一组元素:getElementByTagName   

        <head>  
                <meta charset="UTF-8">  
                <title></title>  
            <style>  
                div{  
                    width: 200px;  
                    height: 200px;  
                    float: left;  
                    border:1px solid black;  
                    margin: 10px;  
                }  
            </style>  
            <script>  
                window.onload=function(){  
                    var aDiv=document.getElementsByTagName('div');  
                    //alert(aDiv.length);//上述代码返回的就是一个数组,此处提示输出数组的长度  
                    //对数组中的div的样式分别进行修改,注意,数组下标是从0开始计数的  
                    aDiv[0].style.background='red';//即第一个div为的背景颜色变为“红色”  
                }  
            </script>  
        </head>  
        <body>  
            <div></div>  
            <div></div>  
            <div></div>  
            <div></div>  
        </body> 

    小综合:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>
            window.onload=function(){
                var oBtn1=document.getElementById('btn1');
                var oBtn2=document.getElementById('btn2');
                var oBtn3=document.getElementById('btn3');
                var oDiv=document.getElementById('div1');
                var aCh=oDiv.getElementsByTagName('input');
    
                oBtn1.onclick=function () {
                    //aCh[0].checked=true;
                    for(var i=0; i<aCh.length; i++){
                        aCh[i].checked=true;
                    }
                };
                oBtn2.onclick=function () {
                    //aCh[0].checked=false;
                    for(var i=0; i<aCh.length; i++){
                        aCh[i].checked=false;
                    }
                };
                oBtn3.onclick=function () {
                    //aCh[0].checked=true;
                    for(var i=0; i<aCh.length; i++){
                        if (aCh[i].checked==true){      //判断用==
                            aCh[i].checked=false;       //赋值用=
                        }
    
                        else{
                            aCh[i].checked=true;
                        }
                    }
                };
            };
        </script>
    </head>
    <body>
        <input id="btn1" type="button" value="全选"/>
        <input id="btn2" type="button" value="全不选"/>
        <input id="btn3" type="button" value="反选"/><br/>
        <div id="div1">
            <input type="checkbox"/><br/>
            <input type="checkbox"/><br/>
            <input type="checkbox"/><br/>
            <input type="checkbox"/><br/>
            <input type="checkbox"/><br/>
            <input type="checkbox"/><br/>
            <input type="checkbox"/><br/>
            <input type="checkbox"/><br/>
            <input type="checkbox"/><br/>
            <input type="checkbox"/><br/>
            <input type="checkbox"/><br/>
            <input type="checkbox"/><br/>
        </div>
    </body>
    </html>

    this:当前发生事件的元素
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>选项卡</title>
        <style>
            #div1 .active{background: yellow;}
            #div1 div{
                width: 200px;
                height: 200px;
                background: #ccc;
                border: 1px solid #999;
                display: none;
            }
        </style>
        <script>
            window.onload=function()
            {
                var oDiv=document.getElementById('div1');
                var aBtn=oDiv.getElementsByTagName('input');
                var aDiv=oDiv.getElementsByTagName('div');
    
                for (var i = 0; i<aBtn.length; i++){
                    aBtn[i].index=i;    //给每一个按钮添加一个自定义属性“index”属性
                    //此时用js添加自定义属性,正规浏览器不会报错;如果在标签内直接添加自定义属性,正规浏览器不会响应
                    aBtn[i].onclick=function () {
                        for (var i = 0;i<aBtn.length; i++){
                            aBtn[i].className='';
                            aDiv[i].style.display='none';
                        }
                        this.className='active';
                        //alert(this.index);
                        aDiv[this.index].style.display='block';
                    };
                }
            };
        </script>
    </head>
    <body>
        <div id="div1">
            <input class="active" type="button" value="教育"/>
            <input type="button" value="培训"/>
            <input type="button" value="招生"/>
            <input type="button" value="出国"/>
            <div style="display: block;">111</div>
            <div>222</div>
            <div>333</div>
            <div>444</div>
        </div>
    </body>
    </html>

    innerHTML:
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>简易年历</title>
        <style>
            #tab{
                width: 360px;
                height: 600px;
                border: 1px solid black;
                text-align: center;
                line-height: 600px;
                margin: 0 auto;
            }
            #tab ul{
                margin-left: -15px;
                margin-top: 23px;
            }
            #tab ul li{
                width: 100px;
                height: 100px;
                border: 1px solid #999999;
                float: left;
                list-style: none;
                /*text-decoration: none;
                text-align: center;*/
                line-height: 20px;
                margin: 1px;
    
            }
            .text{
                width: 308px;
                height: 136px;
                border: 1px solid #943E01;
                margin-top: 440px;
                margin-left: 26px;
                list-style: none;
                line-height: 20px;
            }
        </style>
        <script>
            window.onload=function () {
                var arr=[
                    '快过年了,大家可以商量一下去哪玩儿……',
                    '不知细叶谁裁出,二月春风似剪刀。',
                    '阳春三月,此之踏青最佳时节……',
                    '你是人间四月天……',
                    '五月初夏,时令刚好……'
                ];
    
                var oDiv=document.getElementById('tab');
                var oLi=oDiv.getElementsByTagName('li');
                var oTxt=oDiv.getElementsByTagName('div')[0];
    
                for (var i=0; i<oLi.length; i++){
                    oLi[i].index=i;
                    oLi[i].onmouseover=function(){
                        for (var i=0; i<oLi.length; i++){                        oLi[i].className='';            }           this.className='active';
               oTxt.innerHTML='<h2>'+(this.index+1)+'月活动</h2><p>'+arr[this.index]+'</p>';                    
               //上句如果(this.index+1)不加“()”则系统默认为字符串连接,而不会直接运算,加“()”之后就会直接相加了
                    };
                }
            };
        </script>
    </head>
    <body>
        <div id="tab" class="calendar">
            <ul>
                <li class="active"><h2>1</h2><p>Jan</p></li>
                <li><h2>2</h2><p>Fer</p></li>
                <li><h2>3</h2><p>Mar</p></li>
                <li><h2>4</h2><p>Apr</p></li>
                <li><h2>5</h2><p>May</p></li>
                <li><h2>6</h2><p>Jun</p></li>
                <li><h2>7</h2><p>Jul</p></li>
                <li><h2>8</h2><p>Aug</p></li>
                <li><h2>9</h2><p>Sep</p></li>
                <li><h2>10</h2><p>Oct</p></li>
                <li><h2>11</h2><p>Nov</p></li>
                <li><h2>12</h2><p>Dec</p></li>
            </ul>
            <div class="text">
                <h2>1月活动</h2>
                <p>快过年了,大家可以商量一下去哪玩儿……</p>
            </div>
        </div>
    </body>
    </html>
    函数传参:函数就是占位符
    style与className:
    元素.style.属性=XXX 是修改行间样式
    之后再修改className不会有效果
    自定义属性:索引值的使用
      什么时候需要使用索引值--需要知道第几个的时候
      注意:HTML标签添加自定义属性标签内属性index,在运行时会被FF过滤掉,所以要使用js添加自定义索引属性
  • 相关阅读:
    测试覆盖(率)到底有什么用?
    重构遗留程序的一次案例学习(java程序)
    rsync学习
    一次awk脚本的重构
    哪本书是对程序员最有影响、每个程序员都该阅读的书?
    我的阅读编程书籍的好方法
    领域驱动设计和实践
    不要if else的编程
    编码规范的要点
    最牛B的编码套路
  • 原文地址:https://www.cnblogs.com/han-bky/p/10056315.html
Copyright © 2011-2022 走看看