2017-07-24 117 views
0

我想訪問存在於表格內的表格內的html輸入標籤,如下所示。我已經使用了以下功能來訪問元素,但我在輸出中得到未定義:在javascript中訪問html表格元素

function checkForm() 
     { 
      var table=document.getElementById('register').getElementsByTagName('myTab'); 


      document.writeln(table); 

     } 

以上函數返回undefined。爲什麼,以及如何修復以返回我需要的輸入?

 <!DOCTYPE HTML> 
     <HEAD> 
     <META CHARSET = "utf-8"> 
     <TITLE>Register</TITLE> 
     <link rel="stylesheet" type="text/css" href="reglog.css"> 
     </HEAD> 

     <BODY> 
     <h1 align=center>Register with our portal</h1> 

     <FORM id="register" onsubmit="return checkForm();" METHOD="POST"> 

     <table name="myTab" border = 0 align=center> 

     <tr > 
     <td> Username </td> 
     <td> </td> 
     <td><input name="username" class=textbox type = text required></td> 
     </tr> 


     <tr > 
     <td> Password </td> 
     <td> </td> 
     <td><input name="passwd" class=textbox type = password required></td> 
     </tr> 


     <tr > 
     <td> Confirm Password </td> 
     <td> </td> 
     <td><input name="c_password" class=textbox type = password required></td> 
     </tr> 



     <tr> 
     <td> </td> 
     <td> </td> 
     <td> <input class=button type = submit value = Register> </td> 
     </tr> 


     </table> 

     </FORM> 
     </BODY> 
     </HTML> 
+0

** ... ByTagName ** < - 它應該是從你要找的那個樣子元素的名稱很清楚' '。如果你想查找一個名字的東西,它會是'getElementsByName',而「s」則表示它返回多個元素,即一個nodeList。 – adeneo

+0

另外,停止編寫1995年的代碼。刪除大寫標記名,不要使用'document.writeln'或內聯javascript,確保引用屬性並驗證您的HTML。 – adeneo

回答

1

JavaScript的getElementsByTagName函數的工作,因爲它的名字一樣,用HTML標籤名稱(DIV,表格,表格等)。在你的情況下,將getElementsByTagName('表')。相反,你可以使用getElementsByName.

1

爲ID register從元件得到與屬性myTabtable元素,你可以鏈querySelectorAll()方法爲getElementById()

table = document.getElementById('register').querySelectorAll('table[name=myTab]')[0]; 
 
console.log(table)
<h1 align=center>Register with our portal</h1> 
 

 
<FORM id="register" onsubmit="return checkForm();" METHOD="POST"> 
 

 
    <table name="myTab" border=0 align=center> 
 
    <tr> 
 
     <td> Username </td> 
 
     <td> </td> 
 
     <td><input name="username" class=textbox type=t ext required></td> 
 
    </tr> 
 
    <tr> 
 
     <td> Password </td> 
 
     <td> </td> 
 
     <td><input name="passwd" class=textbox type=p assword required></td> 
 
    </tr> 
 
    <tr> 
 
     <td> Confirm Password </td> 
 
     <td> </td> 
 
     <td><input name="c_password" class=textbox type=p assword required></td> 
 
    </tr> 
 
    <tr> 
 
     <td> </td> 
 
     <td> </td> 
 
     <td> <input class=button type=s ubmit value=R egister> </td> 
 
    </tr> 
 
    </table> 
 
</FORM>

注意getElementsByTagName()從他們的名字中獲取元素,而不是從他們的名字屬性中獲取。

0

有多種訪問表單元素的方法。在您的代碼中,您可以使用表格元素

var x = document.getElementById("register").elements; 

這將爲您提供表單中的所有元素。但是,如果您要訪問第一個元素,你可以使用類似下面的代碼

document.getElementById("register").elements[0].value // 0 is the index as per all the elements present in your form 'register'