js详细基本总结

1.什么是js

JS代码就是JavaScript编写的脚本文件的代码。用单独文件保存,扩展名为.JS

JSJavascriptJavascript是一种由NetscapeLiveScript发展而来的脚本语言,主要目的是为了解决服务器终端语言,比如Perl,遗留的速度问题。当时服务端需要对数据进行验证,由于网络速度相当缓慢,只有28.8kbps,验证步骤浪费的时间太多。于是Netscape的浏览器Navigator加入了Javascript,提供了数据验证的基本功能。

Javascript就是适应动态网页制作的需要而诞生的一种新的编程语言,如今越来越广泛地使用于Internet网页制作上。 Javascript是由 Netscape公司开发的一种脚本语言(scripting language),或者称为描述语言。在HTML基础上,使用Javascript可以开发交互式Web网页Javascript的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容。 运行用Javascript编写的程序需要能支持Javascript语言的浏览器。Netscape公司 Navigator 30以上版本的浏览器都能支持 Javascript程序,微软公司Internet Explorer 30以上版本的浏览器基本上支持Javascript。微软公司还有自己开发的Javascript,称为JScript。 JavascriptJscript基本上是相同的,只是在一些细节上有出入。 Javascript短小精悍, 又是在客户机上执行的,大大提高了网页的浏览速度和交互能力。 同时它又是专门为制作Web网页而量身定做的一种简单的编程语言。

2.js调试

 出错:编写时,没反应;运行时,才出错!

      运行时没效果-->开浏览器的“控制台”!

      firefox-->工具-->web开发者-->Web控制台

   1.错误原因;2.指向错误位置的超链接;

   xxx方法未定义:不是因为方法未定义 真实原因是方法中有错误!

   IE-->F12-->脚本-->控制台

 打桩:调试逻辑错误

      在控制台输出指定内容

      concole.log("输出内容") 不影响网页布局

3.变量:

  所有变量都要用var声明:强烈推荐但不是必须

      js中的变量声明时,不必考虑数据类型!

      首次初始化值时,初始化什么类型的值,变量就是什么类型!

      定义变量时,同时初始化:强烈建议!

      未初始化的变量:默认为undefined-->未定义(2种情况:指定值未得到;未被使用过)

4.小点总结

数据类型:undefined-->经常用于判断是否出错!(输入javaScript的都是字符串)

          null:用过,现在被清空--数据类型为object

         *****boolean类型:0null,“”,falseundefinedNaN等效于false,其余都为true

隐式转换:boolean类型做计算:自动转换为数字:true->1; flase->0

          任何类型碰上string都会转为string--Java

 

强制转换;x.toString():将任何类型转为字符串

        parseInt(x):将任意类型转换为整数

           **凡是从页面上传入到js的都是字符串类型;parseInt会去除整数后的小数位;如果不能转换,返回NaN(Not a Number)

             表示一个非法的数字;却是Number类型;

       重点:自动去除数字*前后*的空格,然后再转换;

             自动去除数字**的非数字字符 

           boolean类型可以隐式转换为数字,但不能强转,否则会返回NaN

       3 parseFloat(x):用法:同parseInt

         typeof(x):返回任何对象的类型名称

 

isNaN:判断一个数据是否为数字:如果x是数字:false;如果不是数字:true

          如果是空字符串不验证:false

         “”-->false-->0

        如果可自动转为数字的内容:false-->是数字

        如果需要强转的内容:true-->不是数字

        如果字面量内容本身为数字,则返回false-->是数字

 

NaNNaN和任何东西做==比较永远返回falseNaN和任何数字做计算,永远返回NaN

     多数情况用于判断错误!

 

String对象的属性:length

5.jsString与正则表达式:

   str.search(regexp):indexOf()

   str=str.replace(regexp,替换值);   

     regexp:正则表达式对象:/正则表达式/属性后缀   g:全局替换; i:忽略大小写 如果不加g,仅替换第一个

    var arr=str.match(regexp)返回:找到会返回一个数组  *没找到返回null*

 

Array对象:

   数组不限制长度和类型

   创建:[]-->凡是[],都是数组 var arr =[];创建一个0个元素的数组对象

                           var arr = [100,"a",true]创建一个三个元素的数组,并初始化

   获取或设置某个元素的值:数组变量[i]

Array API:

  将数组内容转为字符串:var str = arr.toString();-->默认按逗号分割    var str =arr.join(分割字符串);-->可自定义分割符

  拼接数组或追加新元素:concat(元素1,元素2...);  concat(数组b):将数组拼接到原数组之后

  *拼接不会影响原数组,会创建新数组

  

从数组中截取一段子数组:var啊让人=slice(start,end+1);

 

**排序:sort():直接修改原数组对象,不会产生新数组对象;默认的sort方法会将所有元素转换为字符串再排序

        自定义排序:1.定义比较器:就是一个普通方法

                      参数:2个  返回值:整数

                      作用:定义任意两个元素之间的统一比较规则

                   2.直接将比较器传入sort方法中,作为参数

 

笔试题:js中方法定义的3种语法有哪些

        //提前所有代码的执行加载

      * function compare(a,b){return a-b}

        //严格按解释执行,必须先定义再使用

        var compare = new Function("a","b","return a-b");

        var compare = function(a,b){return a-b;}(时髦)

 

移除元素:arr.splice(start,元素个数)

    public int indexOf(String str)

    返回指定子字符串在此字符串中第一次出现处的索引。);后续元素自动补齐。

 

Math: 

   只要验证字符串格式时,就要使用test方法;test方法验证时,都会和^$共同使用,要求完全匹配。

   返回:验证通过:true;否则返回:false

 

取消事件:2return 方法中的return负责抛出boolean值  元素中的return负责接受方法抛出的boolean

          如果收到true,则继续触发事件,否则,取消事件

查找表单中的控件:按name查找  var arr = document.getElementsByName("name");

                 数组中每个元素保存找到的控件对象

 

正则表达式对象.exec():即可以找到关键字的位置,也可以找到关键字的内容;返回值:一次只找到一个匹配项

                          arr:第一个元素,放的是匹配的内容

                       arr.index属性:匹配内容出现的位置。

 

日期类型: 

    原理同Java

    API三句话:1.每个分量都有一对get/set方法;2.get/set年月日星期,单数;时分秒,复数;

               3.只有月中的日从1开始到31结束,其余都是从0开始到-1结束;

 

日期类型计算:先取分量的值-->做计算-->set回日期对象

             Locale:当地的

              Date:只取日期部分   Time:只取时间部分      d.getFullYear()

 

arguments对象:function中接收传入参数的模拟的数组对象 在js中模拟重载效果  arguments.length:参数个数   arguments[i]:取第几个参数

 

alert不是全局函数。

eval函数:专门用于执行字符串格式的代码。eval("alert('Hello')")

 

URI的内容进行转码

encodeURI:将多字节字符,转为单字节字符

decodeURI:将单字节转为多字节

URI中包含多字节字符时,必须转为单字节字符

 

document掌管浏览器的HTML 前端DOMjavaScript DOM

window对象中的confirm:确认框 用户可以选择确认和取消;当用户进行不可逆的危险操作时,必须确认后再执行

 

*超链接:

    第一种:替换当前页:html:<a href="url"></a>

                    js:location.href="url";

    第二种:打开新窗口,可重复:

               html:<a href="url" target="_blank"></a>

                js:window.open("url");

    第三种:打开新窗口,只能打开一个:

                 js:window.open("url","name");

               浏览器规定同名窗口只能打开一个!

 

history:浏览器的历史记录栈;每成功访问一个网址,网址就会入栈;关闭浏览器,清空栈

        如何用js实现前进,后退,刷新:history.go(1):前进      history.go(-1)后退(如果go(-1)不管用,go(-2))        history.go(0)刷新

 

navigator:浏览器的信息,如名称,版本号  *由浏览器厂商定义,没有标准

           cookieEnabled:检测浏览器是否启用cookie(浏览器中保存用户信息的文件/机制)

userAgent:保存浏览器的组织,类型,版本号

 

Timer定时器:只要自己可以动的都是用定时器实现的。周期性定时器:反复,周期性变化;每隔一段时间,重复做相同事

             一次性定时器:一次性执行,自动停止  先等待一段时间,再执行一次,自动停止

 

        三要素:1.做什么事:方法; 2.何时启动:事件;可以动态绑定:将方法作为对象传递  3.全局变量保存定时器编号:启动计时器时获得,

关闭计时器时必须使用

        周期性定时器和一次性定时器用法完全相同

  周期性定时器:启动:timer=setInterval(方法名,间隔的毫秒数)

                            新建一个线程(类似)

               停止:clearInterval(timer);

                            关闭一个线程

               一次性定时器:启动:timer=setTimeout(方法名,等待的毫秒数);

               停止:timer=clearTimeout(timer);

               取消等待

如果样式被程序操作,由class操作是最高效的。

 

三个事件:onmouseover:鼠标进入,仅在进入时触发一次

         onmousemove:鼠标移动,只要一动就会触发

         onmouseout:鼠标移出

 

display:none 隐藏)

 

DOM:专门操作网页元素的API

   获取或修改任意元素的任意属性

   属性:元素对象,属性名

  样式:元素对象.style.样式属性名——>不推荐

  等效于:<标签 style="样式属性...">

  .className属性:只要使用程序修改样式  等效于:<标签 class="类名">

 

问题:java星期:1-7:日-六   js星期:0-6:日-

array.indexOf():IE8可能不支持

 

回顾:

1.DOM:页面中一切元素,属性,文本都是节点对象。可以使用.(点)访问或修改任何对象的任何属性

修改样式,使用.className+CSS整体样式修改

 

 查找:1.ById:getElementById("id")  2.ByNamevar arr =getElementsByName("name")

 

正课:按层次结构查找:obj.parentNode:得到obj节点对象的父节点

                    obj.childNodes:得到obj节点下的所有字节点对象,包含所有字节点,受干扰

      按标签名查找:var arr =obj.getElementsByTagName("标签名")

      向上爬:parentNode  向下爬:getElementsByTagName

 

动态添加新元素:三步:1.创建空元素对象:var newObj =document.createElement("标签名")

                     2.设置元素的属性

                        newObj.属性名=属性值   newObj.style.样式属性=属性值  newObj.className=类名

                     3.将新元素对象挂到网页中的指定位置

                 追加:parentNode.appendChild(newObj);

                 插入:parentNode.insertBefore(newObj,nodeObj)

动态删除元素:parentNode.removeChild(node);parentNode对象下删除node元素对象

 

内容改变事件:onChange

    列表框:selectedIndex属性:选中项的下标

 

标准:DOM/DHTML DOM:无所不能。 API繁琐

     HTML DOM:对标准HTML元素对象的封装  封装:常用元素的常用属性和方法

     问题:无法实现所有功能   优点:对常用元素对象简化操作

 

标准DOM添加元素:3

标准DOM:无所不能。API繁琐

HTML DOM:封装了常用元素对象的常用属性和方法

     局限:不是所有元素都支持

     优点:简化

 

例如:

   标准DOM selObj.getElementsByTagName("option")

   HTML DOM: var arr = selObj.options

 

select对象:属性:options,获得select对象下的所有选项;将options数组.length=0等效于清空所有选项

           sekectedIndex,获得当前选中项的下标;size显示的元素个数,专用于多选

          <select size="5" multiple>

方法:add(optObj);remove(index)

Option对象:

   创建:var newOpt = new Option(innerHTML,value);

 

Table对象:

   属性:*rows,获得所有行对象的数组。cells,获得所有单元格的td对象

   *方法:var newRow = insertRow(index)  

        index=-1:追加,用的多

        deleteRow(index);删除最后一行:table.deleteRow(table.rows.lenghth-1);

TableRow对象:

  属性:*cells,获得一行中的所有单元格; *rowIndex, 当前行的下标  经常用于删除行

  方法:*insertCellindex):

        deleteCellindex);

 

TableCell对象:

 

事件处理机制:

  1.由外向内的捕捉; 2.由内向外的冒泡触发

event对象:封装了事件信息,和this一样是关键字;e更多表示事件,e中保存的就是事件对象

  

取消冒泡:e.cancelBubble=true;

利用冒泡:子元素中定义大量重复事件时,可以在父元素中仅定义一次即可

 

this:保存当前事件触发的对象,会改变

e.srcELement || e.target:保存最初触发事件的对象,不会改变

  IE              Firefox  ||指让浏览器自动选择可用的。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值