基于JS的DOM 编程基础和Json语法及JS下的AJAX基础

1.在dom编程中:     注意:使用dom操作一般在页面完全载入之后,一般在window_onload事件里操作dom

               nodeName  表示节点的名称如:<input   type= "button"  value="确定" />    此时nodeName=“input” ;

              nodeValue  表示节点的值如<p>aaa</p> 此时的nodeValue="aaa",而nodeName="p";

              nodeType 则表示反回节点类型常量值

              firstChild  表示某个dom节点(childNodes)下的第一个子节点如下代码

代码 

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><!--children对象数组元素示例 -->
<html> 
<body> 
  <table   id="tbl">   
  <tbody> <tr> <td> 行1列1 </td><td>行1列2 </td></tr>   
  <tr> <td> 行2列1 </td><td>行2列2 </td></tr> 
  </tbody> 
  </table>   
  <input   onclick="alert(document.all.tbl.children(0).children(0).innerHTML)"   value="children(0)"   type="button">   
  <input   onclick="alert(document.all.tbl.children(0).children(1).innerHTML)"   value="children(1)"   type="button">   
  <input   onclick="alert(document.all.tbl.children(0).children(1).children(0).innerHTML)"   value="children(2)"   type="button"> 
  <div   id=test>   
  <a></a>   
  <table></table>   
  </div>   
    
  <script>   
  alert(test.children[0].tagName)   
  alert(test.children[1].tagName)   
  </script>   
  
</body> 
</html> 

<!--在DOM中,整个页面里的元素是个树型结构 
children 代表对象的子节点数组-->

document.all.tbl.children(0).children(0).innerHTML解释 
document.all.tbl.children(0)定位到table的第一个子节点<tbody> 
document.all.tbl.children(0).children(0)定位到table的第一个子节点的第一个子节点<tr>,打印结果<td> 行1列1 </td><td>行1列2 </td> 


document.all.tbl.children(0).children(1).innerHTML,打印结果<td> 行2列1 </td><td>行2列2 </td> 


document.all.tbl.children(0).children(1).children(0).innerHTML 打印结果行2列2 


<!--fistChild,lastChild示例--> 
<html> 
<body> 
  <table   id="tbl">   
  <tbody> <tr id="tr1"> <td> 行1列1 </td><td>行1列2 </td></tr>   
  <tr> <td="tr2"> 行2列1 </td><td>行2列2 </td></tr> 
  </tbody> 
  </table>   
  <input   onclick="alert(document.all.tbl.firstChild.firstChild.innerHTML)"   value="children(0)"   type="button">   
  <input   onclick="alert(document.all.tbl.firstChild.lastChild.innerHTML)"   value="children(1)"   type="button">   
  <input   onclick="alert(document.all.tbl.firstChild.lastChild.firstChild.innerHTML)"   value="children(2)"   type="button"> 
  <div   id=test>   
  <a></a>   
  <table></table>   
  </div>   
    
  <script>   
  alert(test.firstChild.tagName)   
  alert(test.lastChild.tagName)   
  </script>   
  
</body> 
</html> 

document.all.tbl.firstChild定位到table的第一个子节点<tbody> 
document.all.tbl.firstChild.firstChild定位到table的第一个子节点<tbody> 
的第一个子节点<tr id="tr1"> 
document.all.tbl.firstChild.firstChild.innerHTML打印结果是<td> 行1列1 </td><td>行1列2 </td> 


document.all.tbl.firstChild.lastChild定位到table的第一个子节点<tbody> 
的最后子节点<tr id="tr2"> 
document.all.tbl.firstChild.lastChild.innerHTML打印结果是<td="tr2"> 行2列1 </td><td>行2列2 </td> 


document.all.tbl.firstChild.lastChild.firstChild.innerHTML 打印结果是 
行2列2

            lastChild则表示某dom节点(childNodes)下的最后一个子节点代码见上面

            childNodes表示所有子节点的列表

            previousSibling返回指向当前节点的前一个兄弟节点,如果不存在反回null;

            nextSibling返回指向当前节点的下一个兄弟节点,如果不存在返回null;

            hasChidlNodes 返回布尔类型,表示当前节点下是否有子节点,有返回true,否则false

            attributes    用来获取或设置节点的属性值

           parentNode   获取当前节点的父节点

           appendChild(node)   将node添加到childNodes末尾(即在某节点下添加node子节点)

            removeChild(node)  删除某节点下的node子节点

            replaceChild(newnode,oldnode) 用新节点newnode替换原节点oldnode

            insertBefore(newnode,refnode) 在refnode之前插入newnode

 实例运用:在body标签下添加一个<p>段落标签,并给段落添加文本

   <script type="text/javascript">
        var Op = document.createElement("p");               //  创建标签<p/>
        var Otext = document.createTextNode("Hello Word");  //  创建文本节点
        Op.appendChild(Otext);                              //  在<p>节点下添加文本节点
        document.body.appendChild(Op);                      //  把<p>添加到body节点下
    </script>

2.JSon 语法
         最简单的一条Json语法    名称/值{ "name" : "TOM" }

          多个名称/值对串在一起{ "firstName" : "TOM" ,  "lastName" : "Joy" ,  "Emal" : "123@.com "}

          当要表示一组值时如下

          { " OneArray" : [

                       { "firstName" : "Tom" , " lastName" : "Joy" , "Emal" : "00@.com"} ,

                       { "firstName" : "Lucy" , "lastName" : "Ann" , "Emal" : "hao23@.com"} ,

                      { "firstName" : "Tiger" , "lastName" : "pig" , "Emal" : "126@.com”}       

     

            ] }             仿问或设置属性值时,如:仿问第一个firstName就可以OneArray[0].firstName  来仿问或设置其值。

  3.JS中的AJAX基础和创建XMLHttpRequest对象代码如下

        A.JS中AJAX的用法

        B。创建 XMLHTTPREQUEST对像

 <script type="text/javascript">
function createRequest()
{ var request = false try { request = new XMLHttpRequest(); // 目前IE7以上或Firefox等版本都内置了XMLHttpReques对像,直接new即可 } catch (e) { try { request=new ActiveXObject("Msxml2.XMLHTTP"); // IE7以前的老版本如IE6等以前版本 } catch (ex) { try { request=new ActiveXObject("Microsoft.XMLHTTP"); // 更老版本 } catch (em) { request = false; // 跑到这里,说明你的浏览器不支持XMLHttpRequest } } }
 if (!request) alert("Error initializing XmlHttpRequest!");
}
</script>

      关于XMLHttpRequest.Open( "Get" ,  url , true )    方法配置
                             第一个参数为请求类型:可以为Get  或Post

                             第二个参数为请求的URL:

                            第三个参数为是否异步请求:一般为true, 不然AJAX意义就不大了。

     关于XMLhttpRequest.Send( null ) 方法的使用和说明:当调用该方法时才真正向后台服务器发送请求:

              其参数可以null,也可为一查询语句,当然也可以在前面的url中代参。

      关于XMLHttpRequest的回调函数onreadystatechange属性:其值有5种壮态

                 0:代表刚刚向服务器发送请求

                 1:代表请求正在网络传输中

                 2:代表请求已到达服务器,服务器正在处理

                 3:代表请求反回

                 4:代表请求完全结束             //执行时只须观察壮态为4时

         关于回调函数配置如下

 

      function processZipData() 
         {
             createRequest();                                         // 创建XMLHttpRequest 对像
             var zipcode = document.getElementById("zipcode").value;
             var url = "zipData.js?zipcode=" + escape(zipcode);       //  构建url
             request.Open("GET", url, true);                          // 配置 open方法
             request.onreadystatechange = updatePage;                 // 设置回调函数(updatepage)
             request.send(null);                                      // 调用send 方法发送请求
         }

4.关于JS中仿问选项(即某个选项控件,BS下的DropDownList最终解析为如下标准select标签)

  a.   var   oListBox = document.getElementByID("selAge");

        alert( oListBox.options[0].firstChild.nodeValue);      // option[0]表示第1个选项 这里就是输出ListBox第1个选项。

        alert( oListBox.options[1].getAttributes( "Value" ))      // 获取ListBox第二个选项值

        alert( oListBox.options[2].text );                     //  获取ListBox第3个选择项的文本

        alert( oListBox.options[2].value ) ;                   //  获取ListBox第3个选择项的值

        alert( oListBox.options[2].index );                  //  获取ListBox第3个选择项的索引 

        alert( oListBox.option.length )                        //  获取ListBox的选项个数

  b.  获取或设置选中项

         alert( oListBox.selectedIndex );  // 获取或设置选中项的索引

         alert ( oListBox.options[ oListBox.selectedIndex ].text )   // 获取选中项的文本

         oListBox.selectedIndex = -1 ;      设置未选中

 5.删除选项

       // 删除某一个选项

function Dal(index) // 要删除项的索引 {
var olistBox = document.getElementById("selAge"); olistBox.options[index] = null; // olistBox.remove(index); 和上面效果一样 } // 清空所有选项 function Clear(Olistbox) { for (var i = Olistbox.options.length - 1; i >= 0; i--) // 注意一定是从后往前删除 { Olistbox.remove(i); } }

6.添加项

         function add(oListBox, sName, sValue) 
         {
             var oPtion = document.createElement("option");          // 创建 节点options
             oPtion.appendChild(document.createTextNode(sName));      // 创建文本节点并添加到options节点下 
             if (arguments.length == 3)                               
             {
                 oPtion.setAttribute("value", sValue);                // 设置value 的值
               }
             oListBox.appendChild(oPtion);                           // 将options 节点添加到 oListBox节点下
         }

 

 

 

 

  

      

 

posted @ 2012-11-22 22:46  酒沉吟  阅读(438)  评论(0编辑  收藏  举报