zoukankan      html  css  js  c++  java
  • javascript学习笔记二

    1、js的string对象
      **创建 String对象
        *** var str = "abc";

      **方法 和 属性(文档)
        *** 属性 length : 字符串的长度

        ***方法
          (1)与html相关的方法
            -- bold() : 加粗
            -- fontcolor() :设置字符串的颜色
            -- fontsize() :设置字体的大小

            -- link() : 将字符串显示成超链接。
              --- str.link("Hello.html");

            -- sup() sub() : 上标和下标。

          (2) 与java相关的方法

            -- concat() : 连接字符串
              var str1 = "abc";
              var str2 = "def";
              document.write(str1.concat(str2));

            -- charAt() : 返回指定位置的字符串。
              var str3 = "abcdefg";
              document.write(str3.charAt(1));//如果超出了下标范围,则返回空字符串。

            -- indexOf() : 返回字符串位置,
              var str4 = "abcdef";
              document.write(str4.indexOf(“ab”));//如果字符串不存在,返回-1

            -- split() : 切割字符串,返回数组。
              var str5 = "a-b-c-d";
              var arr1 = str5.split("-");
              document.write(arr1.length);

            -- replace() : 替换字符串
              传递两个参数:
              ---第一个是被替换的部分。
              ---第二个是替换的新串。
                var str6 = "abcde";
                document.write(str6.replace("a","S"));

            -- substr() 和 substring()
              substr(start, len); 返回一个从start位置开始, len长的子字符串。
              substring(start, end);返回一个从start 到 end 的字字符串(有头无尾,而且两个位置可以交换)。

    2、js的Araay对象
      **创建数组:(三种方式)
          --var arr1 = [1,2,3];
          --var arr2 = new Array(3);
          --var arr3 = new Array(1,2,3);

          --var arr = [];表示创建一个空数组。

      **属性: length : 返回数组的长度

      **方法:
          --concat() : 数组的连接
            var arr1 = [1,2,3];
            var arr2 = [4,5,6];
            arr1.concat(arr2);

          --join() : 根据指定的字符分割数组(就是将逗号换成指定符号)
            var arr = ["a","b","c"];
            arr.join("-");

          --push() : 向数组末尾添加元素,返回新的数组长度
                如果添加的是一个数组,这个时候把数组当成一个整体字符串添加进原来数组。
            var arr = ["a","b","c"];
            var arr1 = ["oo","qq"];
            arr.push("xx");
            arr.push(arr1);

          --pop() : 表示删除最后一个元素,并且返回这个元素。
            var arr =["yi","er","san"];
            document.write(arr.pop());
            document.erite(arr);

          --reverce() : 颠倒数组中的元素顺序
            var arr = [1,2,3,4,5,6];
            arr.reverce();
            document.write(arr);

    3、js的Date方法
      **在java中获取当前的时间
        Date date = new Date();
          //格式化
          toLocaleString();

      **js中获取当前时间
        var date = new Date();
        //此方法获得的时间格式与我们常用格式不符,需要格式化。

      **js中格式化当前时间
        toLocaleString();
        *** date.toLocaleString();

      **js中获取当前年的方法
        getFullYear();
        *** date.getFullYear();

      **js中返回当前月的方法(0~11)
        getMonth();
        *** date.getMonth();

      **js中返回当前星期的方法(0!6)
        getDay();
        *** date.getDay();

      **js中返回当前每月天数的方法
        getDate();
        *** date.getDate();

      **js中放回当前小时的方法(0~23)
        getHours();
        *** date.getHours();

      **js中返回当前分钟的方法(0~50)
        getMinutes();
        *** date.getMinutes();

      **js中返回当前秒的方法(0~59)
        getSeconds();
        *** date.getSeconds();

      **js中返回1970年1月1日到现在的毫秒数(java中使用long类型)
        getTime();
        *** date.getTime();


    4、js的Math对象
      **进行数学运算的一个对象。
      ** 该对象只有静态方法(相当于java中的工具类),使用时直接用对象名使用 : Math.method();

      ** 对常用方法进行了解(其他计算方法使用时自行查阅文档)

        *** ceil(x); : 向上舍入。

        *** floor(x); : 向下舍入。

        *** floor(x); :四舍五入。

        *** random(x); : 获得一个0-1的伪随机数。
          --- 得到0-9的随机数:
            Math.random()*10
            Math.floor(Math.random()*10);

        *** pow(x,y); : 返回x的y次幂的值。

      ** 一个重要的属性 : PI : 圆周率。

    5、RegExp
      创建方式:
        var reg = new RegExp(pattern);
        var reg = /^正则规则$/;
      规则的写法:
        [0-9]
        [A-Z]
        [a-z]
        [A-z]
        d 代表数据
        D 非数字
        w 查找单词字符
        W 查找非单词字符
        s 查找空白字符
        S 查找非空白字符
        n+ 出现至少一次
        n* 出现0次或多次
        n? 出现0次或1次
        {5} 出现5
        {2,8} 2到8次
      方法:
        test(str):检索字符串中指定的值。返回 true 或 false
      需求:
        校验邮箱:
            var email = haohao_827@163.com
            var reg = /^[A-z]+[A-z0-9_-]*@[A-z0-9]+.[A-z]+$/;
            reg.test(email);

    6、js的全局对象函数(Functions)
      ** 这些方法不属于任何对象,但是又是常用操作的,所以就定义在全局对象中
      
      ** 这些方法,使用的时候直接写方法名,不用new。

        *** eval() : 执行js代码(如果字符串是一个js代码,使用该方法直接执行
          **** var str = "alert('12345');";
             eval(str);

        *** 对字符进行编码和解码的方法
          **** encodeURI() : 对字符串进行编码(有81个字符不用编码)(常用)

              decodeURI() : 对使用encodeURI进行编码的字符串进行解码。

          **** encodeURIComponent() 和 decodeURLComponent()
               escape() 和 unescape()
             同样是对字符进行编码解码,但是只有73个字符不用编码。

            (使用该方法的原因是为了给汉字进行编码,使得在传输过程中不会出像乱码)
            (可以直接对一整个字符串进行编码解码,而自动对需要编码的字符进行编码。)
      
        *** isNaN() : 判断字符串是否为数字(注: 是否不是数字!)
              var str = "123";
              isNaN(str);

          **** 如果是数字,返回 false
          **** 如果不是数字,返回 true

        *** parseInt() 或者 parseFloat() : 将是数字的字符串转换为数字(两个方法一样的作用)
              var str = "1234";
              parseInt(str);

        *** Number() 和 String() 和 Boolean()
            强制转换


    7、js方法的重载(面试)
      **重载: 两个方法的名称相同,参数不同,我们调用方法的时候通过传入不同参数来选择对应的方法。

      ** js中不存在重载,
        其只会调用最接近调用处的那个方法,
        js的方法,会将参数存入到一个数组: arguments中。

      ** 虽然js中没有重载,但是我们可以通过 arguments来模拟重载的效果。

        *** function add(){
            var num = arguments.length;
            var sum = 0;
            for(var i = 0; i<num;i++){
              sum =sum +arguments[i];
            }
            return sum;
          }



    8、js的bom对象

      ** bom : broswer object model : 浏览器对象模型

      ** navigator :获取客户机的信息(浏览器的信息,比如名字)
        -- navigator.appName;

      ** screen : 获取屏幕的信息(比如宽,高)
        -- screen.width;
        -- screen.height;

      ** location : 请求url地址
        -- href 属性
        *** 获取到请求的url地址。
          --- location.href;

        *** 设置url地址
          --- 页面上安置一个按钮,按钮上绑定一个事件,一点击这个按钮,就跳转到指定页面
          --- location.href = "Hello.html";
            示例: <input type="button" value="按钮" onclick="href1();" />
              ---- 鼠标点击事件 onclick="js的方法;"

      ** history : 请求的url的历史记录
        -- 创建三个页面
          1、 创建a.html,超链接到 b.html 超链接到 c.html。
          2、 在b.html上创建两个按钮,一个前进,一个后退,
          3、 在两个按钮上绑定鼠标点击事件: 前进、后退

        -- 到访问的上一个页面
          history.back();
          history.go(-1);
        -- 到访问的下一个页面
          history.forward();
          history.go(1);

      ** (重): window对象
        ***窗口对象
        ***顶层对象(所有的bom对象都是在window里面的对象属性)

        ***属性: 只记录常用的,其他的查阅文档
        **** opener : 返回一个创建了该窗口的窗口对象。


        ***方法:
          -- window.alert() : 页面弹出一个提示框。(没有返回值)
            --- 可简写: alert();
            --- alert("显示的内容");

          -- window.confirm() : 确认框
            --- var flag = window.confirm("显示内容"); (返回ture,false)


          -- prompt() : 输入对话框(样式较差,一般少用)
            --- window.prompt("显示的内容","输入框中的默认值"); (返回输入的文本)

          -- open() : 打开一个窗口
            --- open("打开的新窗口的地址","","窗口的特征:长,高等");
            --- 创建一个按钮,点击这个按钮,打开一个新窗口。
              window.open("Hello.html","","width=200,height=300");

          -- close() : 关闭窗口(浏览器兼容性比较差
            --- window.close();

          -- 定时器方法:
            --- setInterval("js代码",毫秒数);
              ---- 表示在毫秒数之后执行,循环执行。
              ---- window.setInterval("alert('123');",3000);

            --- setTimeout("js代码",毫秒数);
              ---- 表示在毫秒数之后执行,只执行一次。
              ---- window.setTimeout("alert('abc');",4000);

            --- clearInterval() : 清除setInterval设置的定时器(可用按钮演示)
                var id1 = setInterval("alert("a");",3000);
                clearInterval(id1);

            --- clearTimeout() : 清除setTimeout设置的定时器(可以用按钮演示)
                var id2 = setTimeout("alert(1);",4000);
                clearTimeout(id2);

            注意: 在自己的页面使用 window 调用 方法 和 属性 是调用的本页面对象的方法和属性
                如果想要在本页面调用其它页面的方法和属性,就要使用 opener 或者其他属性来
                获得其他窗口对象。

    9、js的dom对象
      * dom : document object model : 文档对象模型
      ** 文档: 超文本文档(超文本标记文档) html、xml

      ** 对象: 提供了属性和方法

      ** 模型: 使用属性和方法操作超文本标记型文档
        *** 可以使用js里面的dom中的对象的属性和方法,对标记型文档进行操作。
        *** 想要操作标记型文档,首先需要对标记型文档里面的所有内容封装成对象。
          ----将html里面的标签、属性、文本内容都封装成对象
        *** 要对标记型文档进行操作,就要解析标记型文档:
          **** 解析过程:
              根据html的层级结构,在内存中分配一个树形结构,需要把html中的每部分封装成对象。
                ---- document 对象: 整个html文档
                ---- element 对象 : 标签对象
                ---- 属性对象(依赖于 element对象)
                ---- 文本对象(依赖于 element对象)

          ***** Node 节点对象 : 是上述解析产生的对象的父对象
                ---- 如果在document/element等对象中找不到想要的方法,那么就到Node对象中寻找。


      ** DOM模型有三种:
          DOM level 1 : 将html文档封装成对象
          DOM level 2 : 在level1中添加了一些新功能,例如:对于事件的恶和css样式的支持。
          DOM level 3 : 支持xml1.0的一些新特性。


      * DHTML: 不是一种语言,是很多技术的简称
        ** html :封装数据。
        ** css :使用属性和属性值设置样式。
        ** dom :操作html文档(标记型文档)。
        ** javascript : 专门指的是js的语法语句。


    10、document对象
      * 表示整个的文档

       ** 常用方法

        *** write() 方法:
          (1)向页面输出变量(值)
          (2)向页面输出html代码。
            -- var str = "abc";
              document.write(str);
              docuemnt.write("<hr/>");

        *** getElementById() 方法:(返回拥有指定id的第一个对象的引用)
            --通过id获得元素(标签)对象
              如:使用getElementById获得input标签
              var input1 = document.getElementById("idName");
              传递的参数是 input里面的id的值。
                得到input里面的value值
                  input1.name;(标签对象.属性名称)
                向input里面设置一个value值
                  input1.value = "aaaa";

        *** getElementsByName();
            -- 通过标签的name属性值得到标签
            -- 返回一个集合(数组)
              示例:
              var inputs = document.getElementsByName("name1");
              for(var i=0;i<inputs.length;i++){
                  var input1 = inputs[i];
                  alert(input1);
              }

        *** getElementsByTagName("标签名称");
          -- 通过标签的名称得到元素
          -- 返回的也是一个集合(数组)
            示例:
              var inputs = document.getElementsByTagName("input");
              for(var i=0;i<inputs.length;i++){
                var input1 = inputs[i];
                alert(input1);
              }

        *** 注意: 当 使用 getElementsByName 或者 getElementsByTagName获得的数组中只有一个元素时,
            我们可以不使用遍历,而是使用下标直接来获取该标签对象。

        *** hasChildNodes() 该方法用来检查一个元素是否有子节点,返回值是 true 或 false

        *** replaceChild()把一个给定父元素里的一个子节点替换为另外一个子节点
                var reference = element.replaceChild(newChild,oldChild);
                返回值是一个指向已被替换的那个子节点的引用指针。

        *** getAttribute() 返回一个给定元素的一个给定属性节点的值
                var attributeValue = element.getAttribute("attributeName");

        *** getAttributeNode("属性的名称")--Node 返回的是一个属性节点对象

        *** setAttribute()将给定元素节点添加一个新的属性值或改变它的现有属性的值。
                element.setAttribute("attributeName","attributeValue");

        *** createElement()按照给定的标签名创建一个新的元素节点。方法只有一个参数:将被创建的元素的名字,是一个字符串.
                var reference = document.createElement("标签名");

        *** createTextNode()创建一个包含着给定文本的新文本节点。这个方法的返回值是一个指向新建文本节点引用指针。
                var textNode = document.createTextNode("text");

        *** appendChild()为给定元素增加一个子节点:
                var newreference = element.appendChild(newChild).

        *** insertBefore()把一个给定节点插入到一个给定元素节点的给定子节点的前面
                var reference = element.insertBefore(newNode,targetNode);

        *** removeChild()从一个给定元素里删除一个子节点
                var reference = element.removeChild(node);

        *** ChildNodes:返回一个数组,这个数组由给定元素节点的子节点构成:
                var nodeList = node.childNodes;

        *** firstChild:该属性返回一个给定元素节点的第一个子节点,返回这个节点对象的指针。
                var reference = node.firstChild;

        *** lastChild:对应 firstChild 的一个属性。

        *** nextSibling: 返回一个给定节点的下一个兄弟节点。

        *** previousSibling:返回一个给定节点的上一个兄弟节点

        *** parentNode:返回一个给定节点的父节点。

        *** innerHTML: 属性,innerHTML 属性可以用来读,写某给定元素里的 HTML 内容。


        *** nodeName: 如果节点是元素节点,返回这个元素的名称,如果是属性节点,返回这个属性的名称
                如果是文本节点,返回一个内容为#text 的字符串
                var name = node.nodeName;

        *** nodeType:返回一个整数,这个数值代表着给定节点的类型
                1 为元素节点, 2 属性节点, 3 为文本节点。

        *** nodeValue:返回给定节点的当前值: 文本返回内容。 属性返回值。 元素返回null



    11、js的事件
        事件
        事件源
          响应行为
      1、js的常用事件
        onclick:点击事件
        onchange:域内容被改变的事件
            需求:实现二级联动
            <select id="city">
              <option value="bj">北京</option>
              <option value="tj">天津</option>
              <option value="sh">上海</option>
            </select>
            <select id="area">
              <option>海淀</option>
              <option>朝阳</option>
              <option>东城</option>
            </select>
            <script type="text/javascript">
              var select = document.getElementById("city");
              select.onchange = function(){
              var optionVal = select.value;
              switch(optionVal){
                  case 'bj':
                    var area = document.getElementById("area");
                    area.innerHTML = "<option>海淀</option><option>朝阳</option><option>东城</option>";
                    break;
                  case 'tj':
                    var area = document.getElementById("area");
                    area.innerHTML = "<option>南开</option><option>西青</option><option>河西</option>";
                    break;
                  case 'sh':
                    var area = document.getElementById("area");
                    area.innerHTML = "<option>浦东</option><option>杨浦</option>";
                    break;
                  default:
                    alert("error");
                }
              };
            </script>

        onfoucus:获得焦点的事件
        onblur:失去焦点的事件
          需求: 当输入框获得焦点的时候,提示输入的内容格式
            当输入框失去焦点的时候,提示输入有误
            <label for="txt">name</label>
            <input id="txt" type="text" /><span id="action"></span>
            <script type="text/javascript">
              var txt = document.getElementById("txt");
              txt.onfocus = function(){
                //友好提示
                var span = document.getElementById("action");
                span.innerHTML = "用户名格式最小8位";
                span.style.color = "green";
              };
              txt.onblur = function(){
                //错误提示
                var span = document.getElementById("action");
                span.innerHTML = "对不起 格式不正确";
                span.style.color = "red";
              };
            </script>

        onmouseover:鼠标悬浮的事件
        onmouseout:鼠标离开的事件
          需求:div元素 鼠标移入变为绿色 移出恢复原色
            #d1{background-color: red;200px;height: 200px;}
            <div id="d1"></div>
            <script type="text/javascript">
              var div = document.getElementById("d1");
              div.onmouseover = function(){
                this.style.backgroundColor = "green";
              };
              div.onmouseout = function(){
                this.style.backgroundColor = "red";
              };
            </script>


        onload:加载完毕的事件
            等到页面加载完毕在执行onload事件所指向的函数
            <span id="span"></span>
            <script type="text/javascript">
              window.onload = function(){
                var span = document.getElementById("span");
                alert(span);
                span.innerHTML = "hello js";
              };
            </script>

    2、事件的绑定方式
      (1)将事件和响应行为都内嵌到html标签中
          <input type="button" value="button" onclick="alert('xxx')"/>
      (2)将事件内嵌到html中而响应行为用函数进行封装
          <input type="button" value="button" onclick="fn()" />
          <script type="text/javascript">
            function fn(){
              alert("yyy");
            }
          </script>
      (3)将事件和响应行为 与html标签完全分离
          <input id="btn" type="button" value="button"/>
          <script type="text/javascript">
            var btn = document.getElementById("btn");
            btn.onclick = function(){
              alert("zzz");
            };
          </script>

          ****this关键字
              this经过事件的函数进行传递的是html标签对象
              <input id="btn" name="mybtn" type="button" value="button123" onclick="fn(this)"/>
              <script type="text/javascript">
                function fn(obj){
                  alert(obj.name);
                }
              </script>

    3、阻止事件的默认行为
        IE:window.event.returnValue = false;
        W3c: 传递过来的事件对象.preventDefault();
          //ie:window.event.returnValue = false;
          //W3c:传递过来的事件对象.preventDefault();
          //W3c标准
            if(e&&e.preventDefault){
              alert("w3c");
              e.preventDefault();
          //IE标签
            }else{
              alert("ie");
              window.event.returnValue = false;
            }


        //通过事件返回false也可以阻止事件的默认行为
          <a href="demo11.html" onclick="return false">点击我吧</a>

    4、阻止事件的传播
        IE:window.event.cancelBubble = true;
        W3c: 传递过来的事件对象.stopPropagation();
            if(e&&e.stopPropagation){
              alert("w3c");
              e.stopPropagation();
          //IE标签
            }else{
                alert("ie");
                window.event.cancelBubble = true;
            }

  • 相关阅读:
    【转】什么时候用抽象类,什么时候用接口
    高内聚松耦合在程序设计中如何做到
    如何做高水平的程序项目设计者
    NHibernate条件查询(Criteria Query)
    Oracle学习笔记之表结构修改
    Java集合类和HashMap遍历
    Asp.net中基于Forms验证的角色验证授权
    Springconfig.xml数据库操作Bean配置
    Java 常用排序算法实现快速排序、插入排序、选择、冒泡
    .net消息队列
  • 原文地址:https://www.cnblogs.com/soficircle/p/6832862.html
Copyright © 2011-2022 走看看