javascript

注意: 
    1).当页面要加载较大的图片或信息时,此时还没有onload,所以原本想隐藏的模块此时可能会出现:
    解决办法有:将script标签 放在body结束之前
    W3C中有DOMContentLoaded事件只要等到Html加载完成而不需要等到   图片等加载完成。
    IE
   
    2).console.dir()
    3).IE和火狐下CSS透明度设置不一样
        IE:   filter:alpha(opacity=50);
        ff:   opacity:0.6;
    4).页面加载时,由于页面缓存可能让表单默认被选上,但是相应定义 的事件没有发生,处理的方法有:
    1.在加载页面时就检测。
  5)Select 增加元素可以用: add()方法,selectObject.add(option,before)
      参数 描述
      option 必需。要添加选项元素。必需是 option 或 optgroup 元素。
      before 必需。在选项数组的该元素之前增加新的元素。如果该参数是null,元素       添加到选项数组的末尾。
    将select内容清空则可以 将其长度变为0;
  6).y=+x;功能 为将x转换成数字。
  7).onchange 事件为当内容发生变化并且光标移出的时候发生。
  8).禁止粘贴:可以用
      obj.οnpaste=function(){   return false;};
  9).使用innerHTML='';清空节点可能会导致内存泄漏,影响性能和速度。
  10).document.createDocumentFragment();//文档片段
  11).事件对像:evt.target.tagName=="SPAN",通过evt.target获取触发事件的元素
      比如onclick事件是在一个大的容器中定义,但是想知道容器中是哪 个子元素触发           了事件就可以 用evt.target个来获取些元素。
      但是在IE下面名称不同:srcElement
  12).eval_r(),把字符串当作javascript语言执行
  13).数组slice(n)方法,从数组下标为n的地方开始截取。比如a=[1,2,3,45];
  var arr=a.slice(2);结果 arr为[3,45];
  14).arguments会随着函数上下文而变化 
  15).在javascript中浮点数运算的精确度不高比如0.3-0.1会等于0.19999999999999
  16).图像预加载。
  17).括号 的作用是将表达示求值并返回给上下文。
  18).取消浏览器的默认行为:
        if (evt) evt.preventDefault();//W3c
else window.event.returnValue=false;//IE
  19).table插入行和单元格
        插入行:insertRow();
        插入单元格:insertCell();
 
  20).自己定义的HTML属性使用getAttribute获取
  21).在IE和火狐下清除选中:
      if(document.selection && document.selection.empty){
                document.selection.empty();//IE
        }
    else if(window.getSelection){
                  window.getSelection().removeAllRanges();
        }
22).setCapture() 只有IE支持
 
让一个元素可以捕获所有的鼠标事件。
可以用alert()或者releaseCapture(),打断当前的鼠标捕获。
setCapture()可以用在对DIV的拖动效果上。就不用给body设置onmousemove事件了,直接给DIV设置,然后通过
setCapture()让它捕获所有的鼠标事件。

23.在浏览器状态栏上显示:window.status=' ';

24.offsetParent() 定位的父节点

25.在拖动等模块中可能在浏览器中定义的一个事件还没有结束 就跳到其它窗口中(也是 是窗口失焦),当回到浏览器窗口时本来应该结束的事件还在执行。处理这种事件的方法有:
    1).给窗口添加失焦事件如:addEvent(window,'blur',this.mouseupHandle);
        但是此种方法在不同浏览器下执行的效果不一样。可能会出现问题。
    2).
26.在一个类中有时一个方法只需要 在构造的时候调用,这样 我们就可以把这个 方法写成静态方法,比如init()这个方法是DND这类的构造方法则可以写DND.init=function(){}

  27.status,readyState状态
     



1. 在javascript中函数
    var   a=abc;与a=abc()的区别,其中abc为函数
    使用 document.body.getElementByTagName();

2.onload对像 使用方法 :
    window.οnlοad=abc;
    function abc(){
      ……
      }  

3.javascript 的函数可以嵌套着写

4.使用 window.prompt()用户在弹出窗口写入数据

5.获取元素:
    getElementById();
    getElementsByTagNmae();
    getElementByName();
   

6.获取和设置属性
    for属性使用htmlFor
    class 使用className
    getAttribute('id');
    setAtrribute('title','value');
   
7.结点
    文本也算是节点
    注意:空格也会被当作文本结点。//不同浏览器不一样
    nodeType——节点类型,元素节点是1,文本节点是3
    nodeValue——节点值,元素节点为空,文本节点的nodeValue属性即为文本内容
    firstChild——该元素节点包含的第一个子节点
    lastChild——该元素节点包含的最后一个子节点
    nextSibling——该节点的后一个兄弟节点
    previousSibling——该节点的前一个兄弟节点
    childNodes——子节点列表,可以通过node.childNodes[index](或node.childNodes.item(index))来获取子节点
    nodeName——节点名称,对于元素节点,返回tagName,对于文本,则返回#text
    parentNode----- 访问父节点



8.nodeValue 与 innerHTML的区别:
    在nodeValue 中插入html标签将不会被解析而在innerHTML中会被解析

9.函数方法
  join():
        join(separator) 方法用于把数组中的所有元素放入一个字符串。
        使用separator分隔,如果没有写分隔符默认为用‘,’分开
        用法: a.join(" ");
push():
        push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度
        arrayObject.push(newelement1,newelement2,....,newelementX)
        参数 描述
        newelement1 必需。要添加到数组的第一个元素。
        newelement2 可选。要添加到数组的第二个元素。
        newelementX 可选。可添加多个元素。
shift():
        方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
        语法:   arrayObject.shift()
unshift():
        方法可向数组的开头添加一个或更多元素,并返回新的长度。
        语法:arrayObject.unshift(newelement1,newelement2,....,newelementX)
  参数 描述
  newelement1 必需。向数组添加的第一个元素。
  newelement2 可选。向数组添加的第二个元素。
  newelementX 可选。可添加若干个元素。

charAt():
  方法可返回指定位置的字符。

10.创建,删除节点……//不同浏览器方法不一样
  createAttribute (name) 用给定名称name创建特性节点
  createCDATASection (text) 用包含文本text的文本子节点创建一个CDATA Section
  createComment(text) 创建包含文本text的注释节点
  createDocumentFragment() 创建文档碎片节点
  createElement_x (tagname) 创建标签名为tagname的元素
  createEntity Reference(name) 创建给定名称的实体引用节点
  createProcessing Instruction(target, data) 创建包含给定target和data的PI节点
  createTextNode(text) 创建包含文本text的文本节点
  replaceChild(a,b);b为被替换的节点,a为新节点
  node.insertBefore(新节点,旧节点必须是node的子节点);
  appendChild():
        HTML元素方法
        在指定元素节点的最后一个子节点之后添加节点
  removeChild();
          移除节点
          node.removeChild(node的子节点);
  cloneNode(); 克隆节点
          op.cloneNode(bool);true表示连同子节点一起克隆,falsh表示只克隆节点本身
   
11.表单:

    获取表单元素可以使用的方法:
      1).getElementById();
      2).document.formname;
      3).getElementByTagName("form");
    访问表单元素:
      表单提供elements方法获取 form中有所有表单控件:
        var fm = document.forms[0];
alert(fm.elements.length);
      onsubmit方法:
        当表单提交时会发生submit事件,我们可以设置事件监听,当用户提交表单时检查表       单内容。同时,如果用户输入有误,要阻止表单提交,可以在事件处理函数里return       false就行了,当正确时可以调用表单的submit方法提交表单,使用表单的submit方法时       不会执行submit事件处理函数
      文本框默认内容: defaultValue
      下拉框的属性:selectedIndex 返回选中项的下标
    检测IE: navigator.userAgent.indexof("MSIE")>=-1;
    光标焦点:onFocus
    失去焦点:onblur
    移除焦点:blur

12.事件
    事件检测:
      由于火狐与IE不兼容所以使用:evt=evt || event ;
      其中evt || event 表示当evt为true时返回evt,当不为true时检测event如果为真就返回        
13.事件流
      冒泡:
        如果不想让事件向上级传播可以阻止,方法为:
        evt.stopPropagation();//此方法是w3c的方法
        IE使用方法:evt.cancelBubbble=true;
      捕获
        IE不支持,W3C支持
        捕获 从上到下
      阻止默认:
        1).return   false;//不好
        2).preventDefault(); 如 evt.preventDefault();//IE不支持
        3).event.returnValue=false;//IE的方法
14.arguments,call,calle,apply
      callee;//注意 callee 属性是 arguments 对象的一个成员,它表示对函数对象本身的引用
            var sum = function(n)
                {
                  if (n <= 0)   return 1;
                  else   return n +arguments.callee(n - 1)
                }
      call and apply:它们的作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数方式有所区别
      call方法:fn.call(obj);
        将fn的this指向obj的this
           
15. setInterval, clearInterval
      //setInterval(code,time);此函数的功能是每隔time毫秒刷新一次,并且执行code
      // clearInterval(id)
     

var int=self.setInterval("clock()",50)
function clock()
  {
  var t=new Date()
  document.getElementByIdx_x("clock").value=t
  }



15. 引用
  取当前的毫秒数: var da=+new Date;
  toFix   指定小数位   var   n=68; n.toFix(2)等于68.00
  toExponential(),返回科学计数法,n.toExponential(1)等于6.8e+1
  localCompare();字符排序
      ECMAScript 提供了两种方法从子串创建字符串值,即 slice() 和 substring()。这两种方法返回的都是要处理的字符串的子串,都接受一个或两个参数。第一个参数是要获取的子串的起始位置,第二个参数(如果使用的话)是要获取子串终止前的位置(也就是说,获取终止位置处的字符不包括在返回的值内)。如果省略第二个参数,终止位就默认为字符串的长度。slice() 和 substring() 方法都不改变 String 对象自身的值。它们只返回原始的 String 值,保持 String 对象不变。
      slice(-3) ,slice可以用负数,从后面开始向前

16.正则表达式
   
   
修饰符   描述
i   执行对大小写不敏感的匹配。
g   执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m   执行多行匹配。

方括号用于查找某个范围内的字符:
表达式       描述
[abc]       查找方括号之间的任何字符。
[^abc]   查找任何不在方括号之间的字符。
[0-9]   查找任何从 0 至 9 的数字。
[a-z]   查找任何从小写 a 到小写 z 的字符。
[A-Z]       查找任何从大写 A 到大写 Z 的字符。
[A-z]   查找任何从大写 A 到小写 z 的字符。
[adgk]   查找给定集合内的任何字符。
[^adgk] 查找给定集合外的任何字符。
(red|blue|green) 查找任何指定的选项。

元字符
元字符(Metacharacter)是拥有特殊含义的字符:
元字符       描述
.       查找单个字符,除了换行和行结束符。
\w           查找单词字符。
\W       查找非单词字符。
\d     查找数字。
\D     查找非数字字符。
\s     查找空白字符。
\S     查找非空白字符。
\b     查找位于单词的开头或结尾的匹配。
\B     查找不处在单词的开头或结尾的匹配。
\0     查找 NUL 字符。
\n     查找换行符。
\f     查找换页符。
\r     查找回车符。
\t     查找制表符。
\v     查找垂直制表符。
\xxx   查找以八进制数 xxx 规定的字符。
\xdd   查找以十六进制数 dd 规定的字符。
\uxxxx       查找以十六进制数 xxxx 规定的 Unicode 字符。

量词
量词   描述
n+       匹配任何包含至少一个 n 的字符串。
n*     匹配任何包含零个或多个 n 的字符串。
n?     匹配任何包含零个或一个 n 的字符串。
n{X}   匹配包含 X 个 n 的序列的字符串。
n{X,Y} 匹配包含 X 或 Y 个 n 的序列的字符串。
n{X,}   匹配包含至少 X 个 n 的序列的字符串。
n$     匹配任何结尾为 n 的字符串。
^n       匹配任何开头为 n 的字符串。
?=n     匹配任何其后紧接指定字符串 n 的字符串。
?!n     匹配任何其后没有紧接指定字符串 n 的字符串。

正则功能:::
  说明:re表示正则表达示,one 表示要匹配的字符


1).查看某个字符串是不是在另一个字符的开始位置:
    1. 正则表达示
    2. 判断(s.indexof("he")===0) 如果为真那"he"是在字条串s的开始位置

2).查看字符串中是否有空格
    re=/\s/;
    re.test(one);如果为真则有空格,反之没有
3).分组匹配
    re=/^([a-z]+)\s+(\d+)/i
    var arr=re.exec(one);
      返回的值arr为一个数组,其中第一个是匹配的全部值,以后依次为匹配的分组的值 

4).将空格换为空
    全部替换:replace(/\s+/g,'');
5).split(x)将字符串用x分割成数组。
    one.split(/\s+/);
6).s.search(one);查找one在s中的位置,找不到就返回-1
    one.search('');
7).match()方法
    和exec方法,只是掉用的方法不同exec是(正则式).exec(字符串),而match 方法为(字符串).match(正则式)
8).indexOf()方法:方法可返回某个指定的字符串值在字符串中首次出现的位置。
    indexOf("要查找 的字符串")
    indexOf("要查找的字符串","从字符串那里开始查找");//返回的还是从0开始记数
9).lastIndex 规定下次匹配的起始位置//可以手动设置

10).贪婪匹配:能匹配多少就匹配多少
    惰性:能匹配少一些就匹配少一些,在量词后面加上?号就可以表示 
11).非捕获性分组:
      将一个分组当作分组去匹配但是在返回的时候 不返回值:实现方法
      在正则中在分组当面加上?:   如:re=/(\d+)(?:[a-z])/;其中+)(?:[a-z])不会返回值 
12).re=/(\d{3})-\1/; 其中\1表示第一个分组



17.样式、定位
  1.)   clientWidth和clientHeight属性给出元素的可视部分的宽度和高度,当有滚动条时,只返回可见区域大小,对于块级元素,将返回元素的所设置的宽度和高度加上填充(padding)
  2).offsetWidth ,offsetHeight   元素实际所占大小
  3.)scrollLeft和scrollTop,它们用来获得那些具有滚动条的元素滚动条滚动的距离,而没有滚动条的元素,它总返回0.
18.使用javascript建书签
  FF方法: window.sidebar.addPanel(name,address,"");
  IE方法:window.external.addFavorite(address,name);
19. Javascript静态属性和方法

    JavaScript中,每个function都拥有一个原型对象prototype,通过这个对象可以为这个类定义各种属性和方法,但是这样定义的属性和方法是所有该类的对象所共有的,效果上和同这个类的父类中继承的字段和方法差不多。通常我们使用function的原型来创建类的方法,而用普通方式来创建类的属性。
  1).为什么不用原型来创建属性
      因为原型创建的内容是这个类所有对象所共享的,对于一个属性而言,不同的类的对象的值都不一样。如果使用原型对象来创建对象属性,那么任何一个类的对象修改了自己的某个属性,其他对象的相同属性也会被修改。
这么做的本质是因为:属性是各个对象不同的,要求对象自己保存自己该属性的值,而方法对于所有对象而言都是一样的,没有必要每个对象都保存一个方法,只要由类的原型保存一份,各个对象使用方法的时候调用这些方法就可以了。

    2).为什么要用原型来保存方法
      因为方法对所有类对象来说都是一样的,如果用传统方式定义,那样每个类的对象被定义的时候,该对象都会保存这个方法的信息,这样会耗
费很多资源。而使用原型来保存,所有的方法都保存在原型中,每个对象需要使用方法的时候就调用原型对象中保存的方法。节省了资源。
 


20.页面隐藏元素的几种方法:
    1). node.style.display='nine';//因为使用此方法会使整个页面的布局会改变

      none 此元素不会被显示。
block 此元素将显示为块级元素,此元素前后会带有换行符。
inline 默认。此元素会被显示为内联元素,元素前后没有换行符。
inline-block 行内块元素。(CSS2.1 新增的值)
list-item 此元素会作为列表显示。
run-in 此元素会根据上下文作为块级元素或内联元素显示。
compact CSS 中有值 compact,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。
marker CSS 中有值 marker,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。
table 此元素会作为块级表格来显示(类似 ),表格前后带有换行符。
inline-table 此元素会作为内联表格来显示(类似 ),表格前后没有换行符。
table-row-group 此元素会作为一个或多个行的分组来显示(类似 )。
table-header-group 此元素会作为一个或多个行的分组来显示(类似 )。
table-footer-group 此元素会作为一个或多个行的分组来显示(类似 )。
table-row 此元素会作为一个表格行显示(类似 )。
table-column-group 此元素会作为一个或多个列的分组来显示(类似 )。
table-column 此元素会作为一个单元格列显示(类似 )
table-cell 此元素会作为一个表格单元格显示(类似
table-caption 此元素会作为一个表格标题显示(类似
inherit 规定应该从父元素继承 display 属性的值。

    2).   node.style.visibility='hidden';
       
      此方法仅是让元素所占的区域变成透明或者空白,但是所占的位置还在。
值 描述
visible 默认值。元素是可见的。
hidden 元素是不可见的。
collapse 当在表格元素中使用时,此值可删除一行或一列,但是它不会影响表格的布局。被行或列占据的空间会留给其他内容使用。如果此值被用在其他的元素上,会呈现为 "hidden"。
inherit 规定应该从父元素继承 visibility 属性的值。

    3).   node.preantNode.removeChlid(node)
      //性能消耗很大

    21.获取样式
      window.getComputedStyle(node,null) //火狐
      node.currentStyle //IE
    22.事件
        dblclick:双击事件,此方法在不同的浏览器中可能 出现 不同的效果。
    23.json(JavaScript Object Notation)
      javascript 对象标记法。
       
     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值