JavaScript基础知识整理

W3C:HTML 结构标准 / CSS  表现标准 / JavaScript 行为标准

JavaScript的历史故事:

 

{

世界上第一款浏览器 94年网景(Netscape Communications Corporation)公司开发。
95年和sun公司开发出Java
网景和sun进行了深度的合作 java+script= javascript

2003年之前,js其实很少有人使用,因为js就是垃圾广告的代名词。
2004年,一家伟大的公司彻底改变了js的命运,这就公司就谷歌,因为谷歌推出了一种
技术,这种技术一直沿用至今,仍然都是目前主流的技术(AJAX)
ajax:异步加载

}


首先理解JavaScript的基本概念:


    1.JavaScript是什么?


      JavaScript一个可以嵌入到HTML网页当中,是基于对象和事件驱动的脚本语言


    2.JavaScript的特点?


        1.对于用户有非常良好的交互性
        2.具备非常强的安全性(对于用户),JavaScript没有任何的权限可以访问你的系统资源和磁盘
        3.是跨平台,因为是基于浏览器的


    3.JavaScript能做什么?


        1.JavaScript能够实时动态的修改你的CSS和你的HTML代码
        2.能够动态的校验数据


    4.JavaScript的组成


        DOM(文档对象模型) 
        BOM(浏览器对象模型)


   5.怎么去使用JavaScript?


        1.行内
            <input type="button" value="啦啦啦"  οnclick="alert('我被点击了')"/>
        2.内部
            <script type="text/javascript"/>
                alert('我被加载了');            
            </script>
        3.外部
            <script type="text/javascript" src="../js/js_demo.js"/>
            


    JavaScript代码放在哪个位置?
       注意:  原则上,你JavaScript放任意位置都没问题,但是在不影响功能的前提下,建议越晚加载越好
    
二:JavaScript的基本语法

  typeof获取当前数据的类型
             js当中的原始数据类型:
                     number:数字
                     string:字符串类型
                     boolean:布尔类型
                     null:空类型
                     underfind:未定义


        注意: number/string/boolean 伪数据类型(等同于java的自动拆装箱)

    类型转型:
        number/boolean类型转成string
            toString();
        string/boolean转number
            parseInt();
            parseFloat();


       注意: string转成number parseInt(x) 字符串必须开头包含数字,最后的结果就是开头的数字
        
    强制类型转换:
      

 Boolean(),强转布尔
            数字如果转成布尔,false即0 true即1
            字符串如果转成布尔,空内容即false,有内容及true
        Number()
            布尔转数字,true即1 false即0
            字符串转数字,不能转

   
    引用数据类型
      

 java:Object ob = new Object();
    js:var ob = new Number();

        
  三、 运算符与逻辑语句的使用


        赋值运算:
            var  x = 5;
        算数运算:
            + - * /(操作跟java一致,你们不让我讲)
        逻辑运算:
            && || 
        比较运算:
            < > <= >= != == ===
        全等:需要数据类型和数据值完全匹配
        三元运算:
            3 > 2 ? 3 : 2;
        void运算:
            <a href="javascript:void(0)">点击我跳转</a>
        类型运算符:
            typeof:获取数据类型
            instanceof:判断某一个数据是否为某种数据类型


            
    逻辑语句:

  1.if
            if(x > 5){
                alert("大于");
            }
        2.if else    
            if(x > 5){
                alert("大于");
            }else{
                alert('小于');
            }
        3.switch(){
            case "css":
                alert("xxx");
                break;
            default:
                alert("xxx");
        }
        4.for
            for(var a = 0;a < 5;a++){
                alert(a);
            }
        5.for in
            var arr = [1,56,1,5,"s"];
            for(s in arr){
                //alert(s);//索引编号
                alert(arr[s]);
            }

 

四、函数的定义

  1.JavaScript是如何去定义函数的
        普通函数:
            语法:function 函数名(参数列表){函数体}.
        举例:
            function method(){
                    alert("haha");
                }
            method();
        
        
        匿名函数:
            function(参数列表){函数体}
        举例:
            var method = function(){
                    alert("haha");
            }
            method();
            
        对象函数:
            语法:new Function(参数列表,函数体);
            注意:参数名称必须使用字符串,最后一个默认为函数体必须要以字符串形式表示
            示例:
            var fn = new Function("num","s","s3","alert(num+s+s3)");
            fn(15,25,34);

           
        函数参数的问题:
         

   1.形参不要使用var去进行修饰
            2.形参的个数不一定和实参的个数一致,但是只能多不能少
            3.函数当中,默认会有一个arguments将参数封装成一个数组
            for(var i = 0;i < arguments.length;i++){
                    alert(arguments[i]);
            
            }


        返回值:

<js是弱类型的语言>
      

     1.JavaScript也是存在返回值的,只不过没有java那么强烈的要求
            2.JavaScript在定义函数的时候,没有必要像Java一样去声明返回值类型
            3.JavaScript可以通过return进行返回,return后面可以写语句,但是不会执行

            
五、
JavaScript的事件
    首先要确定三点:事件源、响应行为、事件
  

 1.JavaScript的常用事件
        onclick:点击事件
            <input type="button" value="点击"  onclick="fn();"/>
            
            function fn(){
                alert('我被点击了');
            }
            
            
        onchange:域内容被改变的事件
        
            <select id="city">
                <option value="hn">湖南</option>
                <option value="gd">广东</option>
                <option value="fj">福建</option>
            </select>
            <select id="area">
                <option value="hn">湘潭</option>
                <option value="gd">长沙</option>
                <option value="fj">株洲</option>
            </select>
            
            <script>

         /*学了jQuery会简单很多,但也要懂JavaScript怎么做*/
              

  /*获取省级select的节点*/
                var select = document.getElementById("city");
                select.onchange = function() {
                    /*根据获取的节点,来获取所改变的value*/
                    var v = select.value;
                    /*根据value来判断用户改变的是什么*/
                    switch(v){
                        case 'hn':
                            /*获取城市select的节点*/
                            var area = document.getElementById("area");
                            /*改变元素节点下*/
                            area.innerHTML = '<option>湘潭</option>'+
                                             '<option>长沙</option>'+
                                             "<option>株洲</option>";
                            break;
                        case 'gd':
                            var area = document.getElementById("area");
                            area.innerHTML = '<option>深圳</option>'+
                                             '<option>广州</option>'+
                                             "<option>东莞</option>"+
                                             "<option>清远</option>";
                            break;
                        case 'fj':
                            var area = document.getElementById("area");
                            area.innerHTML = '<option>台湾</option>'+
                                             '<option>厦门</option>'+
                                             "<option>福州</option>"+
                                             "<option>清远</option>";
                            break;
                        
                    }
                    
                }
            </script>


    onfocus:元素获得焦点 
    onblur:元素失去焦点 

       var userName = "admin888";
        var text = document.getElementById("text");
        
        //获得焦点
        text.onfocus = function() {
            var span = document.getElementById("action");
            span.innerHTML = "请输入6-11位的账号";
            span.style.color = "green";
        }
        
        
        //失去焦点
        text.onblur = function() {
            var span = document.getElementById("action");
            
            if(text.value == null &&
               text.value == ""){
                span.innerHTML = "请输入您的账号";
                span.style.color = "red";
                
            }else{
                var user = /^[A-z0-9_]{6,11}$/;
                if(user.test(text.value)){
                    if(userName == text.value){
                        span.innerHTML = "您的账号已经存在";
                        span.style.color = "red";
                    }else{
                        span.innerHTML = "账号可用";
                        span.style.color = "green";
                    }
                    
                }else{
                    span.innerHTML = "请输入6-11位的账号";
                    span.style.color = "red";
                }
            }
        }


        
        
    onmouseout 鼠标从某元素移开
    onmouseover 鼠标被移到某元素之上 
     

   <div class="c1" id="d1"></div>
        
        var d1 = document.getElementById("d1");
        d1.onmouseover = function(){
            this.style.backgroundColor = "green";
        }
        d1.onmouseout = function(){
            this.style.backgroundColor = "red";
        }

        
    onload:加载完毕事件
     

   等待某个页面加载完毕所触发的事件
        window.onload = function(){
            var s = document.getElementById("s");
            alert(s);
            alert("HTML加载完毕");
        }


        
    事件的绑定方式:
        

1.将时间的响应行为和HTML代码内嵌到一起
            <input type="button" value="button" onclick="alert('我被点击了')" />
        2.将事件的响应行为和函数进行封装
            <input type="button" value="button" onclick="fn()" />
            function fn(){
                alert('我被点击了')
            }
        3.将事件的行为和HTML代码完全分离
            <input type="button" id="btn" value="button"/>
            
            var btn = document.getElementById("btn");
            btn.onclick = function(){
                alert('我被点击了');
            }


    
        this关键字:
          

  this经过的事件进行传递的整个元素标签的所有属性
            <input name="b_name" type="button" value="button" onclick="fn(this)" />
            
            function fn(t){
                alert(t.value)
            }


六、JavaScript的BOM
       
      

     alert():显示带有一段消息和一个确认按钮的警告框。
            confirm():显示带有一段消息以及确认按钮和取消按钮的对话框。
            有返回值:确认即true/取消则false
                for (;;) {
                    var v = confirm("我是最帅的人吗?");
                    if(v == true){
                        break;
                    }
                }

  
    

    open() 打开一个新的网页。
                window.open("http://www.baidu.com");
                open("http://www.baidu.com");
            open可以打开新的本地文件也可以打开新的url地址

      

       prompt():显示可提示用户输入的对话框。
        有返回值,如果输入框有数据则返回数据,如果输入框没有数据或者点击取消则返回的null
        for(;;) {
                var p = prompt("请确认", "请输入");
                if(p == "admin") {
                    alert("您可以浏览网页");
                    break;
                }
            }


 
            
    定时器:
        

setTimeout() 在指定的毫秒数后调用函数或计算表达式。
        setTimeout(js代码(函数),毫秒数);
            setTimeout(
                function(){
                    alert("好好学习,天天向上")
                }
                ,2000);
        
        
        clearTimeout():取消由 setTimeout() 方法设置的 timeout。 
            var timer;
            var fn = function(){
                alert("toobug");
                timer = setTimeout(fn,2000);
            };
            var closer = function(){
                clearTimeout(timer);
            }
            
            fn();


            

七、获取节点


    1.根据id值来获取元素节点(重要):
      
 document.getElementById("id的值")
        
    2.根据元素的name值来获取元素节点(重要)
      
 document.getElementsByName("name的值");
        
        返回的一个数组
            测试长度:inputName.length
            遍历这个name的所有元素节点:
          

     for(var i = 0;i < inputName.length;i++){
                    var inputNode = inputName[i];
                    alert(inputNode.value);
                
                }


        为每个文本框(<input type="text">)增加change事件,当值改变时,输出改变的值
          

 for(var i = 0;i < inputName.length;i++){
                var inputNode = inputName[i];
                inputNode.onchange = function(){
                    alert(this.value);
                }
            }

            
    3.根据标签名获取元素节点(重要)
        document.getElementsByTagName("input");
        
        返回的是一个数组:
            测试长度:inputNodes.length
        遍历value的值
    

          for(var i = 0;i < inputNodes.length;i++){
                alert(inputNodes[i].value)
              }

          
        输出type="text"中 value属性的值 不包含按钮(button)

          

 for(var i = 0;i < inputNodes.length;i++){
                var inputNode = inputNodes[i];
                if(inputNode.type == "text"){
                    alert(inputNode.value)
                }
            }

            
    4.判断该元素是否允许存在子节点(了解)
      

  document.getElementById("tid_1"); 
        edu.hasChildNodes();//允许返回true/不允许则返回false


        
    5.通过元素来获取具体的内容值(有点印象)
  

      var node = document.getElementById("tid_1");
        获取该元素的首个子节点:node.firstChild;
        获取该元素的元素标签名:node.nodeName
        获取该元素的类型:node.nodeType  返回1则为元素节点 返回2则为属性节点
        获取该元素的内容值:node.nodeValue 返回该元素节点的内容

    6.获取指定元素的属性值(重要)
    

    var xj =  document.getElementById("xj");
        alert(xj.getAttribute("value"))

    7.给指定元素添加属性值(重要)
      

  var xj =  document.getElementById("xj");
        alert(xj.setAttribute("属性名","属性值"))
        

        
1.点击按钮或者标签来切换图片
  

 <body>
        <input type="button" value="点我换图片" id="btn" />
        <img src="../img/j.jpg" id="img1" />
    </body>
    <script>
        var btn = document.getElementById("btn");
        btn.onclick = function(){
            var img = document.getElementById("img1");
            img.src = "../img/y.jpg";
        }
    </script>

    

2.实现图片自动轮播
 

    <script>
            /*
                 1.不需要准备任何的事件
                 2.怎么去实现轮播?    
                     2.1定时器
                 3.怎么切换图片
             */
            var index = 0; //2
            function changeImg(){
                //1.获得是哪个元素进行图片的切换
                var img = document.getElementById("img1");
                //2.计算出要切换到第几张图片
                var curIndex = index%3 + 1;//0 1 2 
                img.src ="../img/"+curIndex+".jpg"//1
                //每次切换完毕进行加1
                index = index + 1;
            }
            
            
            function init(){
                setInterval("changeImg()",1000);
            }
    </script>
    
    <body onload="init()">
        <div>
            <img src="../img/1.jpg" width="100%" id="img1">
        </div>
    </body>


    
3.定时弹出广告
  

 <script>
            function init(){
                setTimeout("show()",3000);
            }
            function show(){
                //获取需要操作广告的元素
                var img = document.getElementById("img1");
                //显示广告
                img.style.display = "block";
                //3秒之后再关闭广告
                setTimeout("hide()",3000);
            }
            function hide(){
                //获取需要操作广告的元素
                var img = document.getElementById("img1");
                //显示广告
                img.style.display = "none";
                //3秒之后再关闭广告
            }
    </script>
    <img src="../img/y.jpg" id="img1" style="display: none;" />

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值