javascript

来源:互联网 发布:乌云整站源码 编辑:程序博客网 时间:2024/05/22 05:26
注意: 
  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.onpaste=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
       }
   elseif(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.onload=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)
              }
      calland 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
    vararr=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 ObjectNotation)
     javascript 对象标记法。
     
     
和)
原创粉丝点击