zoukankan      html  css  js  c++  java
  • javascript 的基础笔记

    新手入門:

    alert的使用:

      在alert中xB0可以输出温度(centigrade)的符号,xNN可以输入一些不能输入的特殊字符,NN是两个十六进制数,表示字符在latin-1 字符集中的编号。。

    注:特殊字符并不是跨平台兼容,xNN在windows 平台中代表特定的字符,但在mac或unix系统中,它可能代表的是另一字符。

    alert(Number(null)); 弹出的是个0;

     

    在javascript 中空值用NaN(Not a Number)来表示 

     

    在javascript中  ” 是个转义字符,用来表示单个双引号,一般都是成对出现的

     

    prompt() 方法用于显示一个带有提示信息,并且用户可输入信息的对话框,第一个参数为提示信息,第二个参数为文本框默认值。

     

    数据类型的转换:

    parseInt()、parseFloat()函数,可以将字符串转换成整数、浮点数,处理机制:逐字符地解析字符串中的字符,并检查其中是否是一个有效的数字,如果是,转换为对应的数字,否则,终止解析,返回NaN,并将该字符之前的字符串转换为对应的数值

     

    数组:

    声明一个变量,并将变量定义成一个数组

    Array()是一个构造函数,可以传递一个整型数据,表示数组的长度,,js中数组的最大长度为2的32次方

    var array;    array= new Array();

    或:var array = new Array();

     

     

    Number()函数:

     把对象的值转换成数字

     

    怎么表示乘方与开根号:

    例: var a = Math.pow(3,4);  表示3的4次方

             var a = Math.sqrt(81);    表示81的开方  

     

    在js中的函数调用不分先后顺序的,可以先调用再实现

     

    在写javascript的代码时一定要用单引号或者双引号括起来,不带引号的话就以字符串来处理

     

    在javascript里面不能以纯数字或者click命名函数或者变量

     

    要想修改标签的属性,在html里面怎么写,javascript里面就怎么写,但有一个例外,就是class,要写成className

     

    鼠标的响应事件:onmouseOver、onmouseOut

     

    在javascript中获得标签的属性值有两种方法,点( . )或者方括号 [ ] (这是万能的)

     

    设置标签的背景图片: background-image:url(‘jrwm.png’);或者直接写background:url() top center     也是可以的、 注意一定得是单引号,如果是双引号就不行了

     

    style加的样式是加在行间的

     

    标签的优先级:

    行间>id>class>标签

     

    js里面的匿名函数,就是直接写在function(),不用取名字,方便

     

    html在head中有时候标签没执行,就调用这个未知的标签就会报错,window.onload就可以解决这个问题,作用是等页面加载完成之后调用

    window.onload=function()   {  这里面写函数内容}

     

    返回的是一个数组,运用和c语言的数组一样

    document.getElementsByTagName(这里面写标签的类型,比如div,然后用单引号或双引号括起来)

     

    在js中input的checkbox要想选种就要这样写:xxx.checked=ture/false;

     

    在javascript中,this的作用就相当于oc中的self,谁调用它就是谁

     

    Sting 对象:

    charAt()方法和charAtCode()方法

     charAt()方法和charAtCode()方法:获取字符串中指定位置的字符及该字符在Unicode字符集中的编码值

       charAt() 参数变回所选取字符在字符串中的位置,返回值为该位置上的字符

       charAtCode () 参数为所选取字符在字符串中的位置,返回值为该位置上的字符的Unicode编码值

     

    for …in  循环

    注意:遍历出来的元素是不是元素而是整数,要在遍历的数组中[遍历的数]才取得出

     window.onload=function() {

                var nav1 = document.getElementById("nav");

                var ele;

                var i;

                var allli = nav1.getElementsByTagName("li");

    //            for(ele in allli) {

    //                allli[ele].index = ele;

    //                    allli[ele].onmousemove = function () {

    //                        for(var b in allli) {

    //                            allli[b].style.borderBottom = "0px";

    //                        }

                            //执行到这里面的时候就会出现莫名的错误,尽量不要用for in 来遍历

    //                    };

       

            // 同样的代码,这里就不会出错

                for (i = 0; i < allli.length; i++)//循环每个按钮

                {

                    allli[i].onmousemove = function ()//按钮的第i个点击事件

                    {

                        for (i = 0; i < allli.length; i++)//循环去掉button的样式,把div隐藏

                        {

                            allli[i].style.borderBottom = "0px ";

                        }

                        this.style.borderBottom="4px solid red";

                    }

                }

            }

    还是不要用for in 好点,用for循环,因为有时候就会出错

    引用外面的js文件:

     <script  src=“xxxx.js”  type=“text/javascript”></script>

    类型转换:

    字符串转换: string();

    布尔转换: !!放在前面即可

    数值转换: number()

    js的动画效果

    常见的三种输出语句:

    1、Alert() 弹出警告框  完整的写法: window.alert();

    2、控制台输出 console.log()

    3、文档打印  document.write("要打印的内容");

     

    事件的三要素:事件源、事件、事件处理程序

     

    onclock  鼠标单击    、 ondblclick     鼠标双击 

    onkeyup  按下并释放键盘上的一个键触发

    onchage  文本框或者是下拉菜单,或者是文本内容的选项发生改变的时候

    onfocus  获得焦点 获取鼠标的光标

    onblur 失去焦点  失去鼠标的光标

    onmouseover  鼠标悬停,即鼠标停留在图片等的上方

    onmouseout   鼠标移出,即离开图片等的所在区域

    onload   网页文档加载完成的时候调用

    onunload   关闭网页时

    onsubmit   表单提交事件

    onreset   重置表单时

     

      string

    返回字符串的长度:length

     

    为字符串添加样式:“xxx”.big()/“xxx”.small()/“xxx”.bold()/blink()/tolowerCase()/toUpperCase()等

     

    返回字符串中指定的文本首次出现的位置: -indexOf()方法,如果找到就返回,没有就返回-1

     

    查找字符串中特定的字符,若找到,则返回该字符   -match()方法     没有找到就返回 null

     

    替换字符串中的字符 -replace();   例:document.write(str.replace("ni","wo"));

     

    Date日期对象

    使用Date( )方法来返回今天的日期和时间

     

    使用getTime()来计算从1970、1、1到今天的;毫粆数吧,但是得有个前提: 必须先创建一个日期date对象   

    var d=new Date();
    document.write(d.getTime());

     

    使用setFullYear()设置具体的日期  ,前提和上面一样

     

    使用toUTString()把当日的日期(根据UTC)转换为字符串, 前提和上面的一样

     

    使用getDay() 来显示星期,而不仅仅是数字,前提和上面一样,不过调用返回的是整数,比如星期二就是2

     

    时钟的方法: getHours()   getMinutes()   getSeconds()   不过前提和上面一样

     

    数组

     

     合并两个数组 - concat()     

    用法: 数组1.concat(数组2)    

     

    用数组元素组成字符串   -join()   这个括号里面填的是分隔符

     字符串.split("-")   通过-来分割字符串返回一个数组来保存

    数组根据名称或者数字来排列数组元素

      sort()  如果元素是字母的话,以字母的顺序排序,如果想排序数字的数组,那就用sort(sortNumber)

     

    css中的伪类:

    何为伪类:

    也就是实际实现了类的效果,但是并没有实际添加到标签中的类,这样的就是伪类,伪类的典型构成就是使用了(:)冒号

    1、最常用的a链接的伪类,目前市场上的主流浏览器都支持

    : link   链接样式

    : visited  链接访问过后的样式(只要访问历史记录存在)

    :hover 鼠标悬停样式

    :active 鼠标按下样式

     

    before 与after  伪类的用法:http://justcoding.iteye.com/blog/2032627

    一个放在当前的前面,反之后面, 这两个伪类的特有属性content

     

    background-size:  length|percentage|cover|contain;

    cover:意思是把背景图像扩展至足够大,以使背景图像完全覆盖背景区域。背景图像的某些部分也许无法显示在背景定位区域中。

     

    “appearance”功能听起来蛮大的,不过可惜的是,目前各个浏览器厂商各自为政,还无法达到统一的标准,至今天也只有两个内核的浏览器可以使用,其一是“webkit”,其二是“ff”也就是firefox浏览器的,也就是说在使用“appearances”时,需要加上各浏览器厂前缀。mozilla是moz的全称,是火狐浏览器的生产厂商,即是一家公司。

    注意:使用是前面要加一个  -

    -moz-代表firefox浏览器私有属性

    -ms-代表IE浏览器私有属性

    -webkit-代表chrome/safri私有属性

    -o-代表opera私有属性,说白了就是为了兼容

    去除系统默认appearance的样式,常用于IOS下移除原生样式,比如在新世界这个项目中的select就用到

    了解更多:http://www.css88.com/book/css/webkit/visual/appearance.htm

    -webkit-appearance: none 

    -moz-appearance: none;

     

     

    header标签:

    <header> 标签定义文档的页眉(介绍信息)。是html5新出的

     

    letter-spacing 属性增加或减少字符间的空白(字符间距)。

     

    transform 属性向元素应用 2D 3D 转换。该属性允许我们对元素进行旋转、缩放、移动或倾斜。

    -webkit-transform:rotate(7deg); /* Safari Chrome */

    延时调用函数:

    setTimeout(这里写的是调用的函数名,时间以(毫粆来作单位)

     

    正则表达式 RegExp(regular expression):

    是一种模式,当你检索某个文本时,可以用来描述要检索的内容,简单的模式可以是一个单独的字符,复杂的模式包括更多的字符,并可用于解析、格式检查、替换等等。

    3个对象方法:text()、exec()、compile()、

     

    注意:

    函数内部声明变量的时候,一定要使用var定义。如果不用的话,你实际上声明了一个全局变量!

     

    闭包的概念如果一个函数访问了它的外部变量,那么它就是一个闭包。闭包就是一个函数把外部的那些不属于自己的对象也包含(闭合)进来了。

     

       <script type="text/javascript">

        // 闭包的理解

         function foo(x){

            var tmp = 3;

            return function (y){

                alert( x + y + (+tmp));

            }

         }

         var bar = foo(2);   // bar 现在是一个闭包

         bar(10);

        </script>

     上面的脚本最终也会alert 16,因为虽然bar不直接处于foo的内部作用域,但bar还是能访问xtmp

      但是,由于tmp仍存在于bar闭包的内部,所以它还是会自加1,而且你每次调用bar时它都会自加1.

    再看一个例子:

    每次定义一个函数,都会产生一个作用域链(scope chain)。当JavaScript寻找变量varible时(这个过程称为变量解析),总会优先在当前作用域链的第一个对象中查找属性variable ,如果找到,则直接使用这个属性;否则,继续查找下一个对象的是否存在这个属性;这个过程会持续直至找到这个属性或者最终未找到引发错误为止

    (function(){

        var hello="hello,world";

        function welcome(hi){

            alert(hi);        //解析到作用域链的第一个对象的属性

            alert(hello);    //解析到作用域链的第二个对象的属性

        }

        welcome("It's easy");

    })();

    解析:

    这里之所以可以弹出hello,原因就是变量解析时在welcome函数作用域链的第一个对象上找不到hello属性,然后就去第二个对象上找去了(结果还真找到了)

     

    img标签:

    如果父类没有设置宽高,img 也没有设置宽高,则父类就会以图片的实际宽高来决定自己的宽高。

     

    二、行内元素与块级函数的三个区别

     

    1.行内元素与块级元素直观上的区别

        行内元素会在一条直线上排列,都是同一行的,水平方向排列

        块级元素各占据一行,垂直方向排列。块级元素从新行开始结束接着一个断行。

    2.块级元素可以包含行内元素和块级元素。行内元素不能包含块级元素。

    3.行内元素与块级元素属性的不同,主要是盒模型属性上

    行内元素设置width无效,height无效(可以设置line-height)margin上下无效,padding上下无效

     

    position属性的深入理解:

     

    如果子类不存在一个有着position的属性的父对象,那么就会以document(非body,当body有margin属性时,子类并不受影响,除非body的position不为static,反正就是找到的position属性的父类为参考对象,否则就是document)为定位对象。

    fixed:是特殊的absolute,即fixed 总是以body为定位对象的,按照浏览器的窗口进行定位的

    static: 在不设置的情况下,position的默认值

     

    float的属性值有none、left、right,有几个要点:

    1. 只有横向浮动,并没有纵向浮动。
    2. 当元素应用了float属性后,将会脱离普通流,其容器(父)元素将得不到脱离普通流的子元素高度。
    3. 会将元素的display属性变更为block。
    4. 浮动元素的后一个元素会围绕着浮动元素(典型运用是文字围绕图片),与应用了position的元素相比浮动元素并不会遮盖后一个元素。
    5. 浮动元素的前一个元素不会受到任何影响(如果你想让两个块状元素并排显示,必须让两个块状元素都应用float)。

    与position的兼容性问题

    元素同时应用了position: relative、float、(top / left / bottom / right)属性后,则元素先浮动到相应的位置,然后再根据(top / left / bottom / right)所设置的距离来发生偏移。

    元素同时应用了position: absolute及float属性,则float失效(也就是两个不能同时出现,没意义,因为position:absolute已经相当于浮动)。

     

    CSS中的清除浮动几种方式

    1、默认情况下没有给父类设置高度,里面的内容会撑开父类,前提就是没有设置浮动,也就是说只有在标准流中才行,如果设置了浮动比如:float:left ,下面的例子,就会重叠在一起了

    CSS中:

     *{

        margin: 0px;

        padding: 0px;

      }

      li{

        float: left;

        80px;

        height: 30px;

      }

      #dd{

        /*clear: both;*/

        height: 30px;   //给父类设置高度即可

      }

    body中:

    <div>

         <ul>

           <li>PS</li>

            <li>AI</li>

             <li>AE</li>

              <li>ARP</li>

         </ul>

       </div>

       <div id="dd"></div>

       <div>

         <ul>

           <li>HTML</li>

            <li>CSS</li>

             <li>JS</li>

     

         </ul>

       </div>

     

    2、不用设置父类的高度,直接在父类的css中写clear:both;

    3、隔墙法(外):在两个div中再写一个div,是专门用来清除浮动的,在这个div的css中写clear:both;即可,父类不用给高度

    4、内墙法:  与第3种方法不同的是,这是在需要给要清除浮动的div(或其他)标签内容中,此时div(父类)高度会随着内容的增加而增加 ,也就是说没有脱离标准流。

    5、overflow:hidden     让其溢出隐藏,个人觉得这并不像清除浮动的作法

     

    CSS中的边界塌陷问题:

    CSS中存在一个margin collapse,即边界塌陷或者说边界重叠。对于

    上下两个并列(就是一个在上,一个在下)的div块而言,前提是在标准流中,上面divmargin-bottom和下面divmargin-

    top会塌陷,也就是会取上下两者margin里最大值作为显示值,所以从这个

    意义上说:CSS及浏览器的设计者们希望我们在布局时,如果遇到上下两个

    并排内容块的安排,最好只设置其中每个块上或下margin的一处即可w3s

    chool也规定:当两个垂直外边距相遇时,它们将形成一个外边距。合并后

    的外边距的高度等于两个发生合并的外边距的高度中的较大者。

    如果不在标准流中,就不会出现塌陷现象,比如浮动,这时的margin是取margin的和值

     

    文本的垂直居中:

    单行居中:设置line-height

    多行居中:设置line-heightpadding-top配合使用

    form的使用:

    form标签里面的常见属性如下

    action: 表单提交的地址, 肯定是要提交给某个服务器的,action的地址就是要提交的服务器的地址

    method:以何种方式提交,常见的为get和post. 区别在于一个是明文(在url中显示),一个是暗文

     

    form标签是和服务器交互用的, 以用户注册为例

    用户在浏览器中的注册页面添加信息后,点击提交,此时是将这些信息提交至某个服务器

    服务器根据提交的信息将注册信息保存. 这个过程就需要使用form标签了

    form中action属性应该是服务器注册模块的地址   

    form标签下应该有input,textarea,select等表单标签以及<input type=" submit"标签

    当点击submit按钮时,浏览器会自动将表单信息封装提交至action中的地址

    所谓的提交就是访问action中地址并携带着form表单中input,textarea,select的信息

     

    在下拉选择时想要返回或改变某个标签的时候会用到,一旦用户选择了就执行这个事件

    on change   事件在用户改变输入域的内容时执行 JavaScript 代码 

    onKeyUp     事件会在键盘被松开时发生

     

    js的动态效果:

    想要移动必须要设置定位 ,默认position是静态的,要设成relative或absolute

    倒计时定时器: setTimeout

    循环定时器: setInterval

     

    javascript事件的两个阶段:

    捕获和冒泡

    比如用户点击 <a>标签,document的点击会首先发生,然后是<body>的处理函数等最后到<a>元素,这就是捕获阶段。

    比如鼠标的移入移出,只支持事件冒泡,不支持捕获。

     

    想要获取div中的内容,可以用innerText属性来获取。

    例如:

    <div id="aa">ssssssssssssss</div>

    <script>

    alert(document.getElementById("aa").innerText)  //或者innerHTML

    </script>

     

    行内元素和块级元素使用浮动后的变化

     

    百度的时候有人说行内元素浮动之后会变成块级元素,于是继续在网上搜索,又有人说不加display:block就变不了会计元素;好的吧,实践出结果,自己试试吧,个人总结了一下:

    行内元素设置成浮动之后变得更加像是inline-block(行内块级元素,设置成这个属性的元素会同时拥有行内和块级的特性,最明显的不同是它的默认宽度不是100%),这时候给行内元素设置padding-top和padding-bottom或者width、height都是有效果的

    给块级元素设浮动的时候也是同样的情况,属性更加像是inline-block

     

     

    表单验证:

      onblur的使用:

       事件会在对象失去焦点的时候发生。比如离开输入框

      onfocus对象在获得焦点的时候调用。

    writeIn与write的区别:

     两者都是JavaScript向客户端输出的方法,对比可知写法上的差别是一个ln--line的简写,换言之,writeln 方法是以行输出的,相当于在 winte 输出后加上一个换行符。

     

    为什么在写window.onload时不行?

    比如点击事件,不能放在window.onload事件里面, 因为这个方法是相当于oc里面的loadView方法,当创建一个对象完成的时候就自动调用,点击事件的话还没发生(不可能一创建完成用户就触发吧?所以程序在没有加载完成的时候就给点击事件赋函数,此时还没有这个函数)

    另一种可能就是作用域问题,写在window.onload中的函数是闭包在一个匿名函数中的,自然无法访问这个函数

     

    在select中通过属性.length可以获得option 的个数,也就是长度 

    Js获取当前日期时间及其它操作

    var myDate = new Date();
    myDate.getYear();        //获取当前年份(2位)
    myDate.getFullYear();    //获取完整的年份(4位,1970-????)
    myDate.getMonth();       //获取当前月份(0-11,0代表1月)
    myDate.getDate();        //获取当前日(1-31)
    myDate.getDay();         //获取当前星期X(0-6,0代表星期天)
    myDate.getTime();        //获取当前时间(从1970.1.1开始的毫秒数)
    myDate.getHours();       //获取当前小时数(0-23)
    myDate.getMinutes();     //获取当前分钟数(0-59)
    myDate.getSeconds();     //获取当前秒数(0-59)
    myDate.getMilliseconds();    //获取当前毫秒数(0-999)
    myDate.toLocaleDateString();     //获取当前日期
    var mytime=myDate.toLocaleTimeString();     //获取当前时间
    myDate.toLocaleString( );        //获取日期与时间

    日期时间脚本库方法列表

    Date.prototype.isLeapYear 判断闰年
    Date.prototype.Format 日期格式化
    Date.prototype.DateAdd 日期计算
    Date.prototype.DateDiff 比较日期差
    Date.prototype.toString 日期转字符串
    Date.prototype.toArray 日期分割为数组
    Date.prototype.DatePart 取日期的部分信息
    Date.prototype.MaxDayOfDate 取日期所在月的最大天数
    Date.prototype.WeekNumOfYear 判断日期所在年的第几周
    StringToDate 字符串转日期型
    IsValidDate 验证日期有效性
    CheckDateTime 完整日期时间检查
    daysBetween 日期天数差

    DOM的结点操作:

    里面有两个参数true、false   -  如果把参数设置为 false,将仅仅克隆空的 LI 元素。所以看到点而已

    cloneNode() 方法创建节点的拷贝,并返回该副本。

    cloneNode() 方法克隆所有属性以及它们的值。

    代码:

     效果图:

         如果把它改为true:图:

       效果图是这样的:

    textarea的使用(文本域):

    创建如: <textarea rows=“10” cols=“3”> </textarea>

    cols:是列 全称columns    rows:是行 

     

  • 相关阅读:
    20155210——20155233信息安全系统设计基础实验一
    # 2017-2018-1 20155210 《信息安全系统设计基础》第四周学习总结
    2017-2018-1 20155210 《信息安全系统设计基础》第3周学习总结
    第二周作业 20155210 潘滢昊
    20155210 实验五
    20155210 2016-2017-2《Java程序设计》课程总结
    20155210第四次实验
    2017-2018-1 20155208 实验四 外设驱动程序设计
    2017-2018-1 20155208 课堂测试(ch06)(补做)
    2017-2018-1 20155208 实验三 实时系统
  • 原文地址:https://www.cnblogs.com/qq1871707128/p/5979444.html
Copyright © 2011-2022 走看看