js学习笔记

来源:互联网 发布:linux crontab java 编辑:程序博客网 时间:2024/06/06 02:56
javascript由三部分组成:
  ECMAScript(核心)  DOM(文档对象模型)  BOM(浏览器对象模型)
typeof操作符:
  "undefined"-------如果这个值未定义
  "boolean"--------如果这个值是布尔值
   "string"--------------如果这个值是字符串
   "number"--------------如果这个值是数值
   "object"--------------如果这个值是对象或nul
   "function"--------------如果这个值是函数
object类型:
   constructor:保存这用于创建当前对象的函数,对于前面的例子而言,构造函数constructor就是object();
   hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是实例的原型)propertyName必须是字符型。
 isPrototypeOf(object):用于检查传入的对象是否是另一个对象的原型
 propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in语句来枚举。参数必须是字符
 toString():返回对象的字符串表示;
 valueOf():返回对象的字符串,数值或布尔值表示。
  
reverse()和sort()方法的返回值是经过排序之后的数组


日期格式化方法:
  1.toDateString()----以特定于实现的格式显示星期几,月,日和年;
  2.toTimeString()----以特定于实现的格式显示时,分,秒和时区;
  3.toLocaleDateString()-----以特定于地区的格式显示星期几,月,日和年;
  4.toLocaleTimeString()-----以特定于实现的格式显示时,分,秒;
  5.toUTCString()-------以特定于实现的格式完整的UTC日期;
RegExp实例属性:
  global-----布尔值,表示是否设置了g标志;
  ignoreCase----布尔值,表示是否设置i标志;
  lastIndex----整数,表示开始搜索下一个匹配项的字符位置,从0算起;
  multiline------布尔值,表示是否设置了m标志;
  source--------正则表达式的字符串表示,按照字面量形式而非传人构造函数中的字符串;
  Input($_)----最近一次要匹配的字符串。Opera未实现此属性;
  lastMatch($&)------最近一次的匹配项。Opera未实现此属性;
  lastParen($+)------最近一次匹配的捕获组。Opera未实现此属性;
  leftContext($')------input字符串中lastmatch之前的文本;
  multiline($*)-------布尔值,表示是否所有表达式都使用多行模式。IE和Opera未实现此属性;
  rightContext($,)-------Input字符串中lastMatch之后的文本;
  localeCompare()方法:比较两个字符;
 HTML方法:
   anchor(name) <a name="name">string</a>
   big();<big>string</big>
   bold():<b>string</b>
   fixed():<tt>string</tt>
   fontcolor(color)<font color="color">string</font>
   fontsize(size)<font size="size">string</font>
栈方法:
  push():方法可以接收任意数量的参数,把它们一个个添加到数组的末尾。
  php():方法则是想欧诺个数组末尾移除最后一项,减少数组的length值,然后返回移除的项。
匿名函数:
   funtion createComparisonFunction(propertyName){
        return function(object1,object2){
          var value1=object1[propertyName];
          var value2=object1[propertyName];
        if(value1<value2){
           return -1;
     
          }else if{
             return 1;
          }else{
             return 0;
          }
         } ;    
       }
   createComparisonFunction()就返回了个匿名函数
递归:
   function factorial(num){
      if(num<=1){
       return 1;
     }else{
       return num=fantorial[num-1];
      }
    }
    
内存泄露:
  function assignHandler(){
    var element=document.getElementById("someElement");   
    element.onclick=function(){
       alert(element.id)
     }; 
   }
检测呈现引擎,平台,windows操作系统,移动设备和游戏系统:
var client=function(){
 //呈现引擎
  var engine={
   ie:1;
   gecko:0,
   webkit:0,
   khtml:0,
   opera:0,
//完整的版本号
  };
 //浏览器
var browser={
  //主要浏览器
 ie:0,
 firefox:0,
 konq:0,
 opera:0,
 chrome:0,
 safari:0,
//具体的版本号
ver:null
};
//平台,设备和操作系统
var system={
 win:false,
 mac:false,
 xll:false,
//移动设备
iphone:false,
ipod:false,
nokiaN:false,
winMobile:false,
macMobile:false,
//游戏系统
wii:false,
ps:false
};
//检测呈现引擎和浏览器
var ua=navigator.userAgent;
if(window.opera){
  engine.ver=browser.ver=window.opera.version();
  engine.opera=browser.opera=parseFloat(engine.ver);
}else if(/AppleWebKit\/(\S+)/.test(ua)){
 engine.ver=RegExp['$l'];
 engine.webkit=parseFloat(engine.ver);
//确定是Chrome还是Safari
if(/Chrome\/(\$+)/.test(ua)){
  browser.ver=RegExp['$l'];
  browser.chrome=parseFloat(browser.ver);
}else if(/Version\/($+)/.test(ua)){
  browser.ver=RegExp["$l"];
  browser.safari=parseFloat(browser.ver);
}else{
  //近似地确定版本号
  var safariVersion=1;
  if(engine.webkit<100){
  safariVersion=1;
}else if(engine.webkit<312){
  safariVersion=1.2
}else if(engine.webkit<412){
  safariVersion=1.3;
else{
  safariVersion=2;
}
browser.safari=browser.ver=safariVersion;
}
}else if(/KHTML\/(S+)/.test(ua) || /Konqueror\/([^;]+)/.test(ua)){
engine.ver=browser.ver=RegExp["$l"];
engine.khtml=browser.konq=parseFloat(engine.ver);
}else if(/rv:([^\]+)\)Gecko\/\d{8}/.test(ua){
engine.ver=RegExp["$l"];
engine.gecko=parseFloat(engine.ver);
//确定是不是Firefox
if(/Firefox\/(\S+)/.test(ua)){
  browser.ver=RegExp["$l"];
  browser.firefox=parseFloat(browser.ver);
}
}else if(/MSIE([^;]+)/.test(ua)){
  engine.ver=browser.ver=RegExp["$l"];
  engine.ie=browser.ie=parseFloat(engine.ver);
}
//检测浏览器
browser.ie=engine.ie;
browser.opera=engine.opera;
//检测平台
var p=navigator.platform;
system.win=p.indexOf("Win")==0;
system.mac=p.indexOf("Mac")==0;
system.xll=(p=="xll") ||(p.indexOf("Linux")==0);
//检测windows操作系统
if(system.win){
  if(/Win(?:dows)?([^do]{2})\s?(\d+\.\d+)?/.test(ua)){
    if(RegExp["$l"]=="NT"){
     switch(RegExp["$2"]){
       case"5.0":
          system.win="2000";
          break;
       case"5.1":
          system.win="XP";
          break;
       case"6.0":
          system.win="Vista";
          break;
       default:
          system.wn="NT";
          break;
}
}else if(RegExp["$l"]=="9x"){
    system.win="ME";
}else{
    system.win=RegExp["$l"];
   }
  }
}
//移动设备
system.iphone=ua.indexOf("iphone")>-1;
system.ipod=ua.indexOf("ipod")>-1;
system.nokiaN=ua.indexOf("NokiaN")>-1;
system.winMobile=(system.win=="CE");
system.macMobile=(system.iphone||system.ipod);
//游戏系统
system.wii=ua.indexOf("wii")>-1;
system.ps=/playstation/i.test(ua);
//返回这些对象
return{
  engine:engine,
  browser:browser;
  system:system
};
}();








script language="javascript">
function showandhide(h_id,hon_class,hout_class,c_id,totalnumber,activeno) {
  var h_id,hon_id,hout_id,c_id,totalnumber,activeno;
  for (var i=1;i<=totalnumber;i++) {
  document.getElementById(c_id+i).style.display='none';
  document.getElementById(h_id+i).className=hout_class;
  }
  document.getElementById(c_id+activeno).style.display='block';
  document.getElementById(h_id+activeno).className=hon_class;
}
var tips;
var theTop = 40;
var old = theTop;
function initFloatTips()
{
 tips = document.getElementById('nyschool');
 moveTips();
}
function moveTips()
{
  var tt=50;
  if (window.innerHeight)
  {
  pos = window.pageYOffset
  }else if (document.documentElement && document.documentElement.scrollTop) {
  pos = document.documentElement.scrollTop
  }else if (document.body) {
  pos = document.body.scrollTop;
  }
  pos=pos-tips.offsetTop+theTop;
  pos=tips.offsetTop+pos/10;
  if (pos < theTop){
  pos = theTop;
  }
  if (pos != old) {
  tips.style.top = pos+"px";
  tt=10; //alert(tips.style.top);
  }
  old = pos;
  setTimeout(moveTips,tt);
}
initFloatTips();
 if(typeof(HTMLElement)!="undefined") //给firefox定义contains()方法,ie下不起作用
  {
  HTMLElement.prototype.contains=function (obj)
  {
  while(obj!=null&&typeof(obj.tagName)!="undefind"){ //通过循环对比来判断是不是obj的父元素
      if(obj==this) return true;
       obj=obj.parentNode;
     }
  return false;
  }
 }
function show()
{
 document.getElementById("meumid").style.display="none"
 document.getElementById("contentid").style.display="block"
}
 function hideMsgBox(theEvent){
  if (theEvent){
  var browser=navigator.userAgent;
  if (browser.indexOf("Firefox")>0){ //如果是Firefox
  if (document.getElementById("contentid").contains(theEvent.relatedTarget)) { //如果是子元素
  return
  }
  }
  if (browser.indexOf("MSIE")>0 || browser.indexOf("Presto")>=0){ //如果是IE
  if (document.getElementById('contentid').contains(event.toElement)) { //如果是子元素
  return; //结束函式
  }
  }
  }
  document.getElementById("meumid").style.display = "block";
  document.getElementById("contentid").style.display = "none";
  }
</script>
详细资料:scxh@cn
把@换成点
纯属技术问题,非广告
右侧的QQ咨询浮动在IE,360,火狐中都是正常的,在搜狗等浏览器中,鼠标一移上去还没有点链接它就自动隐藏啦,哪位帮忙看看,级解决下兼容问题。


特殊集合:
  document.anchors包含文档中所有带name特性的<a>元素;
  document.applets,包含文档中所有的<applet>元素,因为不在推荐使用<applet>元素,所以这个集合已经不建议使用了。
  document.forms,包含文档中所有的<form>元素,与document.getElementsByTagName("form");得到的结果相同
  document.images 包含文档中所有的<img>元素,与document.getElementsByTagName("img")得到的结果相同
  document.links.包含文档中所有带href特性的<a>元素。
Element类型:
  nodeType的值为1;
  nodeName的值为元素的标签名;
  nodeValue的值为null;
  parentNode可能是Document或Elment;


延迟脚本:
 <script>标签定义了defer属性,这个属性的用途是表明脚本在执行不会影响页面的构造。也就是说,脚本会被延迟到整个页面都解析完毕之后在运行。
 <script type="text/javascript" defer="defer" src="example1.js"></script>
attributes属性:
  getNamedItem(name);    返回nodeName属性等于name的节点;
  removeNamedItem(name);  从列表中移除nodeName属性等于name的节点;
  setNamedItem(node);    项列表中添加节点,衣节点的nodeName属性为索引
  item(pos);             返回位于数字pos位置的节点。
Text类型
  nodeType的值为3;
  nodeName的值为“#text”,
  nodeValue的值为节点所包含的文本,
  parentNode是一个Element;
不支持(没有)子节点
  appendData(text);将text添加到节点的末尾
  deleteData(offset,count);从offset指定的位置开始删除count个字符
  insertData(offset,text);在offset指定的位置插入text
  replaceData(offset,count,text);用text替换从offset指定的位置开始到offset+count为止的文本;
  splitText(offset);从offset指定的位置将当前文本节点分成两个文本节点;
  substringData(offset,count);提取从offset指定的位置开始到offset+count为止处的字符串;
滚动:
 scroolIntoView(alignWithTop):滚动浏览器窗口或容器元素
 scrollIntoViewIfNedded(alignCenter):只在当前元素的视口中不可见的情况下,才滚东浏览器窗口或容器元素
 scrollByLines(lineCount):将元素内容滚动指定的行数的高度,lineCount值可是正值;
 scroolByPages(pageCount):将元素的内容滚动指定的页面的高度,具体高度有元素的高度决定。
document.body.scrollByLines(5);
document.forms[0].scrollIntoView();
document.images[0].scrollIntoViewIfNeeded();
document.body.scrollByPages[-1];
innerHTML返回当前元素所有子节点HTML表现,包括元素,注释及文本节点。
outerText属性:
  除了作用范围扩大到包含调用它的节点之外,outerText与innerText基本上没有多大区别。
DOM操作技术:
caption:保存着对<caption>元素的指针;
tBodies:是一个<tbody>元素的HTMLCollection;
tFoot:保存着对<tfoot>元素的指针;
tHead:保存着对<thead>元素的指针;
rows:是一个表格中所有行的HTMlCollection;
createTHead():创建<thead>元素,将其放到表格中,返回引用;
createTFoot():创建<tfoot>元素,将其放到表格中,返回应用;
createCaption():创建<caption>元素,将其放到表格中,返回引用;
deleteThead():删除<thead>元素;
deleteTFoot():删除<tfoot>元素;
deleteCaption():删除<caption>元素;
deleteRow(pos):删除指定位置的行;
insertRow(pos):向rows集合中的指定位置插入一行;
rows:保存着<tbody>元素中行的HTMLCollection;
deleteRow(pos):删除指定位置的行;
insertRow(pos):向rows集合中的指定位置插入一行,返回对新插入行的引用;
cells:保存着<tr>元素中单元格的HTMLCollection;
deleteCell(pos):删除指定位置的单元格;
insertCell(pos):向cells集合中的指定位置插入一个单元格。
DOM样式属性和方法:
cssText:如前所述,通过它能够访问到style特性中的css代码;
length:应用给元素的css属性的数量;
parentRule:表示css信息的cssRule对象。本节后面将讨论cssRule类型。
getPropertyCSSValue(propertyName):返回包含给定属性值的CSSValue对象。
getProperPriority(propertyName):如果给定的属性使用了!important设置,则返回"important";否则,返回空字符。
getPropertyValue(propertyName):返回给定属性的字符串值。
item(index):返回给定位置的css属性的名称。
removeProperty(propertyName):从样式中删除给定属性。
setProperty(propertyName,value,priority):将给定属性设置为相应的值,并加上优先全标志。
TreeWalker:
   parentNode():遍历到当前节点的父节点;
   firstChild():遍历到当前节点的第一个子节点;
   lastChild():遍历到当前节点的最后一个子节点;
   nextSibling():遍历到当前节点的下一个同辈节点;
   previousSibling():遍历到当前节点的上一个同辈节点;
就绪状态变化(readystatechange)事件:
  uninitialized(未初始化):对象存在但尚未初始化;
  loading(正在加载):对象正在加载数据;
  loaded(加载完毕):对象加载数据完成;
  interactive(交互):可以操作对象了,但还没有完成加载;
  complete(完成):对象已经加载完毕;
操作剪贴板:
   beforecopy:在发生复制操作前做前触发;
   copy:在发生复制操作时触发;
   beforecut:在发生剪切操作前触发;
   cut:在发生剪切操作时触发;
   beforepaste:在发生粘贴操作前触发;
   paste:在发生粘贴操作时触发;
选择框脚本:
   add(newOption,relOption):向控件中插入新<option>元素,其位置在指定项(relOption)之前。
   multiple:布尔值,表示是否允许多项选择,等价于HTMl中的multiple特性。
   options:控件中所有<option>元素的HTMLCollection.
   remove(index):移除给定位置的选项;
   selectedIndex:基于0的选中项的索引,如果没有选中项,则值为-1.对于支持多选的控件,只保存选中项中第一项的索引;
为<table>元素添加的属性和方法如下:
   caption:保存着对<caption>元素(如果有)的指针;
   tBodies:是一个<tbody>元素的HTMLCollection;
   tFoot:保存着对<tfoot>元素(如果有)的指针;  
  
innerHTML与innerText:
  innerTest与innerHTML在很多方面都很相似。在读取信息时,innerHTML返回当前元素所有子节点的HTML表现,包括元素,注释及文本节点。在写入信息时,innerHTML会按照指定的值创建新的DOM子树,并以该子树替换当前的所有子节点。提到innerHTML与innerText之间最主要的区别,无非就是innerHTML处理的是HTML字符串,而innerText处理的是普通文本字符串。


DOM:
  文本对象模型(Document Object Model, DOM是一种用于HTML和XML文档的编程接口。
它给文档提供了一种结构化的标识方法,可以改变文档的内容和呈现方式。
动态样式:
  function loadStyles(url){
    var link = document.createElement("");
  }