1. 程式人生 > >js表單驗證處理和childNodes 和children 的區別

js表單驗證處理和childNodes 和children 的區別

.get out ren 改名 表單 tex jquery this 如果

一、對提交表單進行空值驗證

html代碼:

1   <form action="#"onsubmit="return validate_form(this);" method="post">
2         Email: <input type="text" name="emails" size="30"><br>
3         Phone: <input type="text" name="phone" size="30"><br>
4                <input type="submit" value
="Submit"> 5 </form>

js:

 1 function validate_required(field,alerttxt){
 2     with (field){
 3       /*如果輸入框值為空則返回false*/
 4       if (value==null||value==""){
 5           alert(name+alerttxt);
 6           return false
 7       }else {
 8           return true
 9       }
10   }
11 }
12 13 /*表單驗證*/ 14 function validate_form(thisform){ 15 with(thisform){ 16 for(i=0; i< elements.length-1; i++){ 17 /*遍歷表單內容*/ 18 if (validate_required(elements[i]," must be filled out!")==false){ 19 elements[i].focus();//高亮空白輸入框 20 return
false 21 } 22 } 23 } 24 return true; 25 }

二、childNodes 和children 的區別

  1、childNodes:它是標準屬性,它返回指定元素的子節點集合,包括HTML節點,所有屬性和文本節點(包括換行和空格也算一個節點)。

    • nodeType == 1時,表示該節點為元素節點,
    • nodeType == 2時,表示該節點為屬性節點,
    • nodeType == 3時,表示該節點為文本節點,

  例如下面一段html代碼的head標簽節點:

1 <head>
2      <meta charset="utf-8">
3      <script type="text/javascript" src="G:/DevelopSoftware/Sublime/workspace/js/js/jquery.js"/></script>
4      <title>js測試</title>
5  </head>

  我想通過獲取子節點的方式來獲得頁面的title內容並修改它,使用如下js方法

1 var h = document.getElementsByTagName("head")[0].childNodes;//獲取head標簽的子節點集合
2     for(i=0 ; i<h.length; i++){
3         /* 分別打印節點標簽名、節點類型代碼、節點html代碼*/
4         console.log(h[i].tagName+" | "+h[i].nodeType+" | "+h[i].outerHTML)
5         if(h[i].tagName == "TITLE"){ //tagNmae匹配的內容都是大寫的
6             h[i].innerHTML = "改名了"    
7         }
8     }

  運行結果如下:

  技術分享

  左邊是html源碼結構,右邊是運行結果,第一個節點現實的 節點類型代碼為3,表示他是一個文本節點(其實就是一個換行),第二個節點的類型代碼為1,表示他是一個html標簽節點,(圖中紅色箭頭表示文本節點,黃色箭頭表示html標簽節點)

  當我們將html代碼變成如下樣子(把所有節點寫在一行,html節點間不存在空格和換行),之後,再看運行結果:

  技術分享

  運行結果:

  技術分享

  發現節點只剩下三個了,剛好是三個HTML標簽節點,所以可以看出childnodes查找節點是比較嚴格的,把空格和換行都算在節點中,它把整個源碼結構都遍歷了

  2. children:它時非標準屬性,它只返回指定元素的子節點的HTML節點集合。

    還是上面的例子的第一種情況,我們將獲取節點集合的方式改成chrildren,其他不變,看運行結果:

  技術分享

     可以發現結果它只保存了HTML節點,而沒有其余的文本節點幹擾。

==========

js表單驗證處理和childNodes 和children 的區別