1.javascrip概述

什么是javascrip:一种基于对象和时间驱动的解释性的脚本语言,内嵌到html页面上,由浏览器解释运行。

作用:为Html页面添加动态效果,常用于 页面元素的动态显示、输入验证、客户端计算等。

js语言的组成:标准的js代码+jquery+ajax

js代码的封装

2.如何使用js代码:helloworld

<head>
     <scriptlanguage="javascript" src="first.js"></script>
     <scriptlanguage="javascript">function firstMethod(){alert('你好!'); alert('您好!');alert('你好');    }</script>
</head>
<form>
     <inputtype="button" value="第一个按钮" οnclick="alert('Hello world');"/>// 字面值,用完就丢弃
     <inputtype="button" value="第一个方法"οnclick="firstMethod();"/>
     <inputtype="button" value="第二个方法按钮"οnclick="secondMthod();"/>
</form>       
 
//first.js
functionsecondMthod(){alert('second button');}
********************************************************************************************

     方式一:onXXXX=“”

     方式二:script代码块--封装当前页面的代码<head><script>代码

     方式三:js文件--建议使用

 

3. 基础语法:js类似于cc/java

常量和变量   

     声明变量   var  变量名 = 初始值;

     标识符:由字符、数字、下划线、$组成,不能以数字开头;不能于系统关键字重复

     注释://          /**/

     大小些敏感,以;代表一行代码的结束

 

数据类型          

     基本类型:number string  boolean(true=1false=0)

     number:存储的都是浮点类型 1----1.00000000000000001/0.99999999999999999999

     特殊类型:null undefined

     复杂类型:array object Date Math、、

 

数据类型的转换

隐式转换:直接转换

 

vars = "mary";
     varn = 10;
     varb1 = true;
     varb2 = false;     
     alert(s+ n);//mary10
     alert(s+ b1);//marytrue
     alert(n+ b1);//11
     alert(b1+ b2);//1
显示转换:调用方法
     "mary"+ 10.toString()--mary10
     toString
     parseInt
     parseFloat
     typeof
     isNaN(是非数字吗)
 
运算符:
     相等和严格相等==     ===
     三元运算符   表达式?value1:value2;
 
流程控制
     js中的对象    
         Sting对象
              创建:var s="";var s=new String();
              属性:length
              方法:toLowerCase/toUpperCase  indexOf/lastIndex substring charAt/charCodeAt  replace(oldstr,newstr) split
         
         结合正则表达式使用regexp正则表达式,实现对字符串的匹配和替换
              search(regexp)     
              match(regexp)
              replace(regexp);
         //global全局
         //ignour忽略大小写
              
         数组:存储一些类似的数据
              创建数组、赋值
                   varv=new Array();
                   r[0]="mary";//r[0]=[10,“mary“]二维数组也可以
                   r[1]=10;
                   r[2]=true;
                   
                   var  r= new Array(10,"mary",false);
                   varr=[1,"mary",false]
 
              属性:length
              方法
                   a.concat(...);//a拼接...
                   x.join(bystr);
                   x.toString();
                   reverse  翻转
                   sort:默认按照字符比较;可以自定义一个用于比较的方法,由sort方法调用
                   slice(start,end)等价于substring
 
         Math对象
              属性:Math.E(自然数)  Math.PI    Math.LN2
              方法:sin(x) cos(x) tan(x)  asin(x)acos(x) sqrt(x) log(x) exp(x)  abs(x)  max(x,y,...)  random()    round(x)  floor(x)
 
         Number对象  toFixed方法
         正则表达式
              varreg=/^[a-zA-Z0-9]{3,5}$/;
     varreg=/^[\u4e00-\u9fa5]{3}$/;
 
         Date日期对象
              创建日期对象
                   vard= new Date();--当前日期的时间
                   vard=new Date("2013-01-01 12:12:12")
              方法:
                   toXX:转化为某种格式的字符串,常用于界面的显示,如:toDateString/toTimeString
                   getXX:读取时间,getDate getMonth
                   setXX:修改时间:setDate setMonth

<html>
     <head>
         <scriptlanguage="javascript" src="first.js"></script>
         <scriptlanguage="javascript">
              functionfirstMethod()
              {             
                       varss = "10";
                       varn = 10;
                       if(ss== n)alert("equal");
                       if(ss=== n)alert ("same");
              
                       //字符串数据类型
                       alert("ma\"ry\n\u4e00\u9fa5");
                       alert("你好!");          
                       alert("您好!");      
                       alert("你好");        
                       //声明一个变量来保存数据
                       vari = 12;
                       vars = "mary";
                       var b = true;
              }         
         </script>
     </head>
     <body>
         <form>
              <inputtype="button" value="第一个按钮" οnclick="alert('Hello world');"/><br/><br/>
              <inputtype="button" value="第一个方法"οnclick="firstMethod();"/><br/><br/>
              <inputtype="button" value="第二个方法按钮"οnclick="secondMthod();"/><br/>   <br/>
         
              <inputtype="button" value="数据的隐式转换"οnclick="convertData();"/><br/><br/>
              
              <inputtype="text" id="textdata"/>
              <inputtype="button" value="算平方" οnclick="getSquare();"/><br/>         <br/>     
              
              <!--三元运算服才数字 -->
              猜数字:
              <inputtype = "text" id="txtNum"οnblur="guess();"/><br/><br/>
              求和:
              <inputtype = "text" id="aa"οnblur="getSum();"/><br/><br/>
              统计js数量:
              <inputtype="text" id = "txtString" οnblur="trystring();"/><br/><br/>
              将js替换为*;
              <inputtype="text" id = "txtStr"οnblur="thstring();"/><br/><br/>             
              
              将js替换为*;
              <inputtype="text" id = "ttStr"οnblur="thtring();"/><br/><br/>
              数组的各种操作
              <inputtype="text" id="sdfs" value="123,2,4,54,67,6"/>
              <inputtype="button"value="翻转"οnclick="operateArray(1);"/>
              <inputtype="button"value="按字符排序"οnclick="operateArray(2);"/>
              <inputtype="button"value="按数值排序"οnclick="operateArray(3);"/><br/><br/>
              
              <inputtype="button" value="随即整数" οnclick="randomNumber();"/><br/><br/>
              输入验证:用户名3-5位的数字和字母的组合
              <inputtype="text" id="tname"οnblur="justname();"/><br/><br/>
              <inputtype="button" value="获得日期"οnclick="fDate();"/><br/><br/>
                       
         </form>       
     </body>
 </html> 




first.js
//只能些js代码           /**/
function secondMthod(){
     alert('secondbutton');
}
function convertData(){
     vars = "mary";
     varn = 10;
     varb1 = true;
     varb2 = false;
     
     alert(s+ n);//mary10
     alert(s+ b1);//marytrue
     alert(n+ b1);//11
     alert(b1+ b2);//1
}
//计算页面文本框中录入数值的平方
function getSquare(){
     //得到文本框中的文本内容
     vars = document.getElementById("textdata").value;
     //isNaN是非数字马?
     if(isNaN(s)){
         alert("请重新你录入!");
     }else{
         //数据类型的转换
         vardata = parseFloat(s);
         alert(data* data);
     }    
}
function guess(){
     vars= document.getElementById("txtNum").value;
     varn=parseInt(s);
     varresult = (n > 10) ? "too big":(n < 10 ? "toosmall":"good");
     alert(result);
}
function getSum(){
     varn=parseInt(document.getElementById("aa").value);
     varsum=0;
     for(vari=1;i<=n;i++){
         sum+=i;       
     }
     alert(sum);
}
function trystring(){
     vars=document.getElementById("txtString").value;
     varindex=s.indexOf("js");
     varcount=0;
     while(index>-1){
         count=count+1;
         index=s.indexOf("js",index+2);
     }
     alert(count);
}
//使用string对象的方法
function thstring(){
     vars = document.getElementById("txtStr").value;
     varindex = s.indexOf("js");   
     while(index> -1){
         s= s.replace("js","*");
         index= s.indexOf("js",index + 1);
     }
     document.getElementById("txtStr").value=s;
}
function thtring(){
     vars = document.getElementById("ttStr").value;
//    var result = s.replace(/js/gi,"*");//global全局ignour忽略大小写
     //不允许录入数字,将数字替换为*
     varresult = s.replace(/\d+/g,"*");
     document.getElementById("ttStr").value= result;
}
function operateArray(tt){
     vars=document.getElementById("sdfs").value;
     vararr=s.split(",");
     switch(tt){
     case1:
         arr.reverse();//翻转
         break;
     case2:
         arr.sort();
         break;
     case3:
         arr.sort(sortFunc);//自定义比较规则,将方法对象
         break;
     }    
     alert(arr.join(";"));
}
 
//方法:按照数值的大小比较
function sortFunc(a,b){
     returna-b;
}
 
function randomNumber(){
     varmax=50;
     varmin=5;
     varr=Math.random();
     varresult=Math.floor(r*(max-min)+min);
     alert(result);
}
function justname(){
     vars=document.getElementById("tname").value;
     //定义正则表达式regular expression
//    var reg=/^[a-zA-Z0-9]{3,5}$/;
     varreg=/^[\u4e00-\u9fa5]{3}$/;
     if(!reg.test(s))
         alert("请重新录入");  
}
 
function fDate(){
     vard=new Date();
     d.setDate(d.getDate()-3);
     alert(d.toDateString("yyyy-MM-dd"));
}
 

=============================================================================

1 function 对象

定义函数/方法:function 函数名(参数){}    使用function关键字,参数直接定义,使用return实现返回

重载:

js中,方法的名称相同,覆盖(以最后一次定义的为准)

arguments对象:当前方法的参数数组 arguments.length/arguments[i]

 

js中定义方法:

方法一:function关键字明文的定义一个方法

方法二:使用function对象,创建一个方法的实例--最后一个参数是方法体,其他参数是方法的参数

方法三:使用匿名函数,常用于实现内部方式

----------------------------------------

<h4>方法重载</h4>
<input type="button"value="模拟重载" οnclick="tryArguments(12,30);"/>
functiontryArguments(){//function关键字创建方法
     if(arguments.length==1){
         vardata=arguments[0];
         alert(data*data);
     }
     elseif(arguments.length==2){
         alert(arguments[0]+arguments[1]);
     }else{
         alert("NaN");
     }
}
<input type="button"value="内部方法" οnclick="ttFunc();"/>
//js中定义方法
/*方法一:function关键字明文的定义一个方法
 * 方法二:使用function对象,创建一个方法的实例--最后一个参数是方法体,其他参数是方法的参数
 */
 
function ttFunc(){//function对象创建方法
     varf1=new Function("a","b","alert(a+b);");
     f1(10,20);
}
<input type="button"value="内部方法排数组" οnclick="testFunc();"/>
function testFunc(){
     
     vararray=[12,3,10,5,34];
     //使用Function对象定义内部使用的方法,实现数组按照数值大小的排序
     varsortFunc=new Function("a","b","return a-b");
     array.sort(sortFunc);
     alert(array.toString());    
}
<input type="button"value="匿名函数" οnclick="nimingfunc();"/>
//方法三:使用匿名函数,常用于实现内部方式
function nimingfunc(){
     varf1=function(a,b){
         alert(a+b);         
     };
     f1(10,20);
     
}
<input type="button"value="匿名排序" οnclick="nimingpaixu();"/>
function nimingpaixu(){
     vararray=[15,3,10,2,7,25,8];
     varsortFunc=function(a,b){
          return b-a;
     };
     array.sort(sortFunc);
     alert(array.toString());    
}
 


全局函数:parseInt/parseFloat/isNaN/eval/decodeURI/encodeURI
decodeURI:对encodeURI()函数编码国的URI进行解码
encodeURI:把字符串作为URI进行编码
eval(str):计算某个字符串
--------------------------------------
<h4>模拟计算器</h4>
<inputtype="text" id="textdata"/>
<input type="button"value="1" οnclick="cal(this.value);"/>
<input type="button"value="2" οnclick="cal(this.value);"/>
<input type="button"value="3" οnclick="cal(this.value);"/>
<input type="button"value="4" οnclick="cal(this.value);"/>
<input type="button"value="5" οnclick="cal(this.value);"/>
<input type="button"value="6" οnclick="cal(this.value);"/>
<input type="button"value="7" οnclick="cal(this.value);"/>
<input type="button"value="8" οnclick="cal(this.value);"/>
<input type="button"value="9" οnclick="cal(this.value);"/>
<input type="button"value="0" οnclick="cal(this.value);"/>
<input type="button"value="+" οnclick="cal(this.value);"/
<input type="button"value="-" οnclick="cal(this.value);"/>
<input type="button"value="*" οnclick="cal(this.value);"/>
<input type="button"value="/" οnclick="cal(this.value);"/>
<input type="button"value="=" οnclick="cal(this.value);"/>
<input type="button"value="%" οnclick="cal(this.value);"/>
function cal(str){
     if(str== "="){
         varexpression=document.getElementById("textdata").value;
         varexpression=document.getElementById("textdata").value=eval(expression);
     }
     else{
         document.getElementById("textdata").value+=str;
     }
}
 



2   DHTML--动态的html
什么是DHTML:利用js的对象及其方法实现动态效果
DHTML对象模型树
 
location--导航地址栏
history--历史访问记录
event
navigator
document--整个html文档
 
3   window 对象
属性:document:窗口中显示的html文档
         history
         location
         name
         opener:打开当前窗口的window对象
对话框:alert(str)/confirm(str) prompt(str,value):输入对话框,采用文本框输入信息,str为提示信息,value为初始值,确定返回输入值,其他返回undefined;
打开窗口:window.open(rul)--代码中动态的打开某个页面
定时器方法:setInterval/clearInterval  setTimeout/clearTimeout
------------------------------------------------------------------
//弹出的窗口是固定的不可以被修改
<input type="button"value="删除"οnclick="deleteData();"/>
function deleteData(){
     varr=window.confirm("是否真的要删除?");
     alert(r);
     window.prompt("请输入");
}
//其中id 可以防止打开多个,高宽可以设置打开窗口的的大小,toolbar可以设置工具菜单是否被打开
<input id="aaa"type="button" value="打开窗口 " οnclick="openData();"/>
function openData(){
     window.open("http://tts6.tarena.com.cn","aaa","width=400,height=600,toolbar=yes");
}
//时间
<input type="text"id="txtTime"/>
<input type="button"value="显示时间" οnclick="showTime();">
<input type="button"value="启动时钟" οnclick="startTime();">
<input type="button"value="停止时钟" οnclick="stopTime();"/>
function showTime(){
     varnow=new Date();    
     document.getElementById("txtTime").value=now.toLocaleTimeString();
}
//启动动态时钟
var timer;
function startTime(){
     //每个1s调用showTime方法:每隔一秒执行function对象   
     timer=window.setInterval("showTime()",1000);
}
//停止时钟
function stopTime(){
     window.clearInterval(timer);定时器方法:setInterval/clearInterval setTimeout/clearTimeout
}
 
 
//5S后弹出hello
<input type="button"value="一次性弹出菜单"  οnclick="wait();"/>
如果想取消此操作,请点击<a href="javascript:cancelwait();">这里</a>
 
var timer1;
function wait(){
     timer1=window.setTimeout("alert('hello!')",5000);
}
function cancelwait(){
     window.clearTimeout(timer1);
}
 


4. document 对象:代表的就是整个html文档  ,将整个文档做成一棵树,以树形的方式操作它--DOM操作--标准DOM操作(适应性好,繁琐)
 
1) 找到节点对象:遍历树
document.getElementById--根据id精确查找
层次结构查询
     parentNode/
     childNodes/
     lastChild/
     firstChild
document.getElementsByTagName--根据标签的名称查找
<imgsrc="a.jpg"/>
node--节点,并不知道什么节点
node.src/value/type
--------------------------------------------------------------------------
例:修改图像、链接、段落、以及样式
<input type="button"value="实验DOM operation"οnclick="testDOM();"/>
<img width="300px"height="" id="img1"src="blue.jpg">
<a  id="link"href="#">click me</a>     
<p id="p1">段落</p>
<h3id="h3">h3</h3>
function testDOM(){
     //页面上有多少input元素
     varn=document.getElementsByTagName("input").length;
     alert(parseInt(n));
     //修改图像
     varobj=document.getElementById("img1");
     obj.src="only.jpg";
     //修改链接
     varlinkObj=document.getElementById("link");
     linkObj.href="http://tts6.tarena.com.cn";
     linkObj.innerHTML="aaaa"
     //修改段落
     varpObj=document.getElementById("p1");
     pObj.innerHTML="newtext";
     pObj.style.color="red";
     pObj.style.backgroundColor="gray";
     pObj.style.fontSize="20pt";
 
     //修改h3的样式类
     varh3Obj=document.getElementById("h3");
     h3Obj.className="style1";
 
     //获得子点(其中包含空格和回车)
     varulObj=document.getElementById("ul");
     varcount=0;
     for(vari=0;i<ulObj.childNodes.length;i++){
         if(ulObj.childNodes[i].nodeName=="LI"){
              count++;
         }
     }    
     returncount;
}
 



2) 读取或者修改节点的信息:将html标记对象
     <inputtype="text"/>
     a.将html标记对象化:img.src/a.href/input.value/type
     b.innerHTML:标记中间的文本
     c.style.color/fonSize/display:修改简单的样式,每次只能修改一个
     d.className="";--复杂样式定义
     e)nodeName---得到全大写的节点的名称
     
onXXXX = "returnfalse;"可以取消事件
------------------------------------------------------------
例如:模拟用户输入验证
用户名:<input type="text" id="uName"οnblur="valiName();"/>
<span id="nameinfo">3-5位的字母数字的组合</span><br/>
电话:<input type="text" id="utel"οnblur="valiTel();"/>
<span id="telinfo">5位的数字的组合</span><br/>
<input type="submit"value="保存" οnclick="returnvaliAllData();"/>
//验证用户名
function valiName(){
     varname=document.getElementById("uName").value;
     varreg=/^[a-zA-Z0-9]{3,5}$/;
     varspanObj=document.getElementById("nameinfo");
     if(reg.test(name))
         spanObj.style.color="green";
     else
         spanObj.style.color="red";
     returnreg.test(name);
}
//验证电话
function valiTel(){
     vartel=document.getElementById("utel").value;
     varreg=/^\d{5}$/;
     varspanObj=document.getElementById("telinfo");
     if(reg.test(tel))
         spanObj.style.color="green";
     else
         spanObj.style.color="red";
     returnreg.test(tel);
}
//逐一验证所有的项
function valiAllData(){
     varr1=valiName();
     varr2=valiTel();
     alert(r1&&r2);
     returnr1&&r2;
}
 
<h5>模拟购物车</h5>
<table border="1"id="table1" >
     <tr>
         <td>名称</td>
         <td>价格</td>
         <td>数量</td>
         <td>小计</td>                    
     </tr>
     <tr>
         <td>aaa</td>
         <td>10.00</td>
         <td><inputtype="button" value="-"οnclick="sub(this);"/><input type="text"value="1"/>
              <inputtype="button" value="+"οnclick="add(this);"/></td>
         <td></td>                        
     </tr>
     <tr>
         <td>sdfaa</td>
         <td>28.00</td>
         <td><inputtype="button" value="-"οnclick="sub(this);"/><input type="text"value="1"/>
              <inputtype="button" value="+"οnclick="add(this);"/></td>
         <td></td>                        
     </tr>
</table>
总计:<span id="sp1"οnblur="calSum();"></span>
 
 
//增加购物车的数量
function add(btnObj){
     //得到td对象的子对象
     varnodes=btnObj.parentNode.childNodes;
     for(vari=0;i<nodes.length;i++){
         varchild=nodes[i];
         if((child.nodeName=="INPUT")&& child.type=="text"){
              varn=parseInt(child.value);
              n++;
              child.value=n;
         }
     }
     calSum();
}
function sub(btnObj){
     varnodes=btnObj.parentNode.childNodes;
     for(vari=0;i<nodes.length;i++){
         varchild=nodes[i];
         if(child.nodeName=="INPUT"&&child.type=="text"){
              varn=parseInt(child.value);
              if(n>1){
                   n--;
                   child.value=n;
              }             
         }
     }
     calSum();
}
 
/*价格在第二个td里,数量在地三个td里的第二个input里
row.getElementsByTagsName("td")[1].innerHTML;
row.getElementsByTagsName("td")[2].getElementsByTagsName("input")[1].value
*/
 
function calSum(){
     //找到所有的tr
     vartotal=0;
     vartObj=document.getElementById("table1");
     varrows=tObj.getElementsByTagName("tr");
     for(vari=1;i<rows.length;i++){
         varrow=rows[i];
         varprice=parseFloat(row.getElementsByTagName("td")[1].innerHTML);
         varcount=parseInt(row.getElementsByTagName("td")[2].getElementsByTagName("input")[1].value);
         varsum=price*count;
         row.getElementsByTagName("td")[3].innerHTML=sum.toFixed(2);
         total+=sum;
     }
     document.getElementById("sp1").innerHTML=total.toFixed(2);
}
 



3.为文档添加新内容
document.createElement(elementName)
parentNode.appendChild(newNode)
parentNode.insertBefore(newNode,refNode)--refNode参考节点
 ========================================== 
<form id="form1">
<input type="button"value="添加新节点" οnclick="addnewNode();"/>
function addnewNode(){
     //找到服元素
     varformObj=document.getElementById("form1");
     
     //按钮后添加一个文本框
     vartxtObj=document.createElement("input");
     txtObj.type="text";
     txtObj.value="mary";
     document.getElementById("form1").appendChild(txtObj);
 
     //文本框后添加一个段落
     varpObj=document.createElement("p");
     pObj.innerHTML="段落的文本";
     document.getElementById("form1").appendChild(pObj);
 
     //在第一个节点前加一个段落
     varpObj=document.createElement("p");
     pObj.innerHTML="段落的文本";
     document.getElementById("form1").insertBefore(pObj,formObj.firstChild);
 
     //文本框后添加一个按钮
     varbtnobj=document.createElement("input");
     btnobj.type="button";
     btnobj.value="newButton";
     //事件定义
     btnobj.οnclick=function(){alert("helloworld");}; 
     formObj.appendChild(btnobj);
}
 


=========
parentNode.removeChild(childNode)
     a  创建新节点createElement("");
     b    设置节点的信息
     c  加入文档 appendChild/insetBefore新节点已经加入父节点
4 删除节点node.parentNode.removeChild(childNode);
     eHTML DOM:原有的DOM基础上,对一些常用的操作进行封装,简化代码。--将所有的元素封装为对象,比如input对象  A对象
 
1 select和option
     sel.options
     sel.add
     varo=new Option(text,value);
************************************************
省:<select id="sel1">
     <option>--清选择--</option>
     <option>北京</option>
     <option>河北</option>
     <option>河南</option>
</select>
城市:<select id="selCity">
     <option>--清选择--</option>                      
</select>
 
//设计数据存储:二维数组
  var array=new Array();
     array[0]=["清选择"];
     array[1]=["海淀","朝阳"];
     array[2]=["石家庄"];
     array[3]=["郑州","新乡"];
 
//选择城市
function createCity(){
     //第一个下拉框的选项
     varindex=document.getElementById("sel1").selectedIndex;
     //当前需要的数据
     vardata=array[index];
     varselCity=document.getElementById("selCity");
     //删除原有的选项
     while(selCity.childNodes.length>2){
         selCity.removeChild(selCity.lastChild);
     }
     //加入新选项
     for(vari=0;i<data.length;i++){
         varobj=document.createElement("option");
         obj.innerHTML=data[i];
         selCity.appendChild(obj);
     }
}
 
//使用封装的方式实现相同的功能
function createCity(){
     //第一个下拉框的选项
     varindex=document.getElementById("sel1").selectedIndex;
     //当前需要的数据
     vardata=array[index];
     varselCity=document.getElementById("selCity");
     //删除原有的选项
     selCity.options.length=0;
     //加入新选项
     for(vari=0;i<data.length;i++){
         varobj=new Option(data[i]);
          selCity.options[i]=obj;
     //    selCity.add(obj);
     }
}




2 table

     table.insertRow(index)--返回新创建的行对象

     row.insertCell(index)--返回新创建的单元格对象

     cell.innerHTML="mary"

     Table对象

         属性:rows/cells

         方法:insertRow(index) deleteRow(index)

     TableRow对象

         属性:cells/innerHTML/rowIndex

         方法:insertCell(index) deleteCell(index)

     TablCell对象

         属性:cellIndex/innerHTML/colSpan/rowSpan




增加表格

ID:<inputtype="text" id="tID"/>
Name:<inputtype="text" id="tName"/>
<input type="button"value="增加表格" οnclick="addRow();"/>
<table border="1"id="t1">
     <tr>
     <td>ID</td>
     <td>姓名</td>
     </tr>
  <tr>
     <td>1001</td>
     <td>张三</td>
     </tr>
</table>
//为表格添加行以及单元格
function addRow(){
     vart=document.getElementById("t1");
     varrow=t.insertRow(t.rows.length);
     //为行添加单元格
     varcell1=row.insertCell(0);
     cell1.innerHTML=document.getElementById("tID").value;
     varcell2=row.insertCell(1);
     cell2.innerHTML=document.getElementById("tName").value;
}

 

window其他子对象

1    screen对象(没有方法)屏幕的信息

         属性:width/height/availWidth/availHeight(可用的高)

 

2    history对象:历史访问记录

         属性:length

         方法:back()/forward()/go(num)

3    location对象:地址栏

        

属性:href
              location.href="";//保留历史记录
         方法:replace(url)/reload()
              location.replace("");//不会保留历史记录
              location.
<input type="button"value="使用location对象"οnclick="testLocation();">
function testLocation(){
     location.href="http://tts6.tarena.com.cn"
     //location.replace("http://tts6.tarena.com.cn");
}




A页面--B页面

     a静态/window.open动态在新窗口中打开/location动态,不在新窗口打开

 

4    navigator对象:浏览器软件的相关信息

         代码动态的遍历某个对象的所有属性





<input type="button"value="使用navigator对象"οnclick="testNavigator();">
function testNavigator(){
     varstr="";
     for(varr in navigator){
         str+=r+":"+navigator[r]+"\n";
     }
     alert(str);
}




event:

1    事件的分类:鼠标事件   键盘事件   状态改变事件

鼠标事件:onclick ondblclick  onmousedown  onmouseup onmouseover  onmouseout

键盘事件:onkeydown onkeyup

状态事件:(onload onunload--body)onchange onfocus  onblur onresize(onsubmit--form)

2    事件可以取消

     onXXXX="returnfalse;"

    

3    js中,事件有冒泡机制

     如果层次元素定义了相同的事件,从最底层开始触发,层层向上

     利用冒泡机制,解决事件重复定义--使用父元素,比如;div包含,定义div的onclick





计算器

<div οnclick="cal(event);">
     <inputtype="button" value="1"/>
     <inputtype="button" value="2"/>
     <inputtype="button" value="3"/>
     <inputtype="button" value="4"/>
     <inputtype="button" value="5"/><br/>
     <inputtype="button" value="6"/>
     <inputtype="button" value="7"/>
     <inputtype="button" value="8"/>
     <inputtype="button" value="9"/>
     <inputtype="button" value="0"/><br/>
     <inputtype="button" value="+"/>
     <inputtype="button" value="-"/>
     <inputtype="button" value="*"/>
     <inputtype="button" value="/"/>
     <inputtype="button" value="%"/><br/>
     <inputtype="button" value="="/>
     <inputid="resultare"type="text"/>
</div>
//简化计算器e.target火狐浏览器认识  IE谷歌浏览器只认识e.srcElement
function cal(e){
     //得到出发事件的那个对象元素
     varnode=e.target||e.srcElement;
     vartxtObj=document.getElementById("resultare");
     //是否点击的是按钮
     if(node.nodeName== "INPUT" && node.type == "button"){
         //是不是=
         if(node.value== "="){
              txtObj.value= eval(txtObj.value);
         }else{
              txtObj.value+= node.value;
         }
     }
}




4 event对象:只要有事件发生,event对象,其中会有数据

     event.clientX/clientY

     event.srcElement/target--触发事件的对象

 

     event.srcElement

5    元素定义事件

     静态定义:<element onxxxx=""/>

     动态定义:obj.οnclick=functin 对象;

6    面向对象基础:数据和行为的封装

         js中如何实现封装

         封装:

              自用:js代码中使用,随便使用某种方式

              他用:数据封装后传递给服务器端,采用大家都认识的格式--JSON





<input type="button"value="实现数据封装"οnclick="testObject();">
function testObject(){
     //对象:name 为mary,age为18,方法sing调用弹出hello
     //o必须是一个对象,封装了两个数据一个方法
     varo = new Object();
     o.name= "mary";
     o.age= 18;
     o.sing= function(){alert("Hello");};
     alert(o.name);
     alert(o.age);
     o.sing();
}




a>  使用Object对象实现简单封装

     创建一个object对象,直接定义属性和方法不能实现重用

b>  实现自定义封装 构造函数,实现真正的凤凰钻过

<input type="button"value="自定义封装" οnclick="testPerson();">
//定义Person
function Person(n,a){
     this.name= n;
     this.age= a;
     this.introSelf=function(){
         varstr="i am "+this.name+", i am "+a+" years old.";
         alert(str);
     };    
}
 
//测试Person
function testPerson(){
     varp1=new Person("mary",18);
     alert(p1.name+":"+p1.age);
     p1.introSelf();
     varp2=new Person("tom",20);
     alert(p2.name+":"+p2.age);
     p2.introSelf();
}
c>   JSON
         使用名/值对的方式定义
         名称使用“”引起来
         多对定义之间使用,隔开

<input type="button"value="使用JSON封装"  οnclick="testJSON();">
//使用JSON语法封装数据--交换(往往只封装属性)
function testJSON(){
     varp={
         "name":"jerry",
         "age":18
     };
     alert(p.name+":"+p.age);
}
 
/*18 mary/20 tom/30 jerry
varp1={"name":"mary","age":18};
varp2={"name":"tom","age":20};
varp3={"name":"jerry","age":30};
var array=[p1,p2,p3];
*/