2012-04-17 57 views
0

我不知道爲什麼我的代碼說,這是當我試圖做一個簡單的代碼與數據綁定沒有定義:/javascript:函數沒有定義? - 數據綁定

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
<object name="login" id="login" classid="CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83"> 
    <param name="DataURL" value="member.txt"/> 
    <param name="UseHeader" value="true"/> 
    <param name="TextQualifier" value=""/> 
    <param name="FieldDelim" value="|"/> 
</object> 

    <script> 
     var rs = login.resultset; 
     function validation() 
     { 
      rs.moveFirst(); 
      while(rs.moveNext()) 
      {   
       if(document.getElementById("txtid")== rs(0) && document.getElementById("txtpass")==rs(1)) 
       { 
        alert("Login Succeed"); 
        return; 
       } 
      } 
      alert("Email or Password Wrong"); 
      return; 
     } 
    </script> 

</head> 


<body> 
<form> 
Username: <input type="text" id="txtid" /> <br/> 
Password: <input type="text" id="txtpass" /><br/> 
<input type="submit" value="game start" id="btnstart" onclick="validation()"/> 
</form> 
</body> 
</html> 

錯誤:login is not defined

,但我知道,它的定義!我試圖搜索這個,但我不知道我的代碼中有什麼問題:/ 請幫忙嗎?



編輯: 我已經更新了我的代碼是這樣的:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 


<body> 


<form> 
Username: <input type="text" id="txtid" /> <br/> 
Password: <input type="text" id="txtpass" /><br/> 
<input type="submit" value="game start" id="btnstart" onclick="validation()"/> 
</form> 



<object name="login" id="login" classid="CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83"> 
     <param name="DataURL" value="member.txt"/> 
     <param name="UseHeader" value="true"/> 
     <param name="TextQualifier" value=""/> 
     <param name="FieldDelim" value="|"/> 
</object> 

<script> 
    var login = document.getElementById('login'); 
    var rs = login.resultset; 
    function validation() 
    { 
     rs.moveFirst(); 
     while(rs.moveNext()) 
     {   
      if(document.getElementById("txtid")== rs(0) && document.getElementById("txtpass")==rs(1)) 
      { 
       alert("Login Succeed"); 
       return; 
      } 
     } 
     alert("Email or Password Wrong"); 
     return; 
    } 
</script> 

</body> 
</html> 

下一個錯誤,我得到的是rs is undefined當我點擊按鈕。難道我做錯了什麼?

+0

我沒有看到你在任何地方定義'login'。 – 2012-04-17 04:55:07

+0

它在' id =」login「classid =」CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83「>',在標題 – aquatorrent 2012-04-17 04:57:55

+0

下不應該是在身? – 2012-04-17 04:59:03

回答

1

在您的代碼:

> <object name="login" id="login" ...> 
> ... 
> </object> 
> <script> 
>   var rs = login.resultset; 

你期待與ID 登錄元件,並提供一個全局變量,它是一些瀏覽器總是和其他只在一定條件下。這是不是一個好主意,絕不應該被使用,一直使用標準DOM方法參考元素,在這種情況下的getElementById

var el = document.getElementById('login'); 

Futher,沒有標準結果集屬性的對象元素,你的避風港沒有定義一個,因此期望由上述表達式返回的DOM元素將具有結果集屬性是不合理的。至少,在嘗試使用變量之前,您應該測試它是否具有適合您打算使用它的值,例如,

if (rs && rs.moveFirst) { 
     rs.moveFirst(); 

等等。

+0

i已經使用'.getElementById'更新了我的代碼,並在點擊提交按鈕時出現了另一個錯誤。 。 – aquatorrent 2012-04-17 05:41:30

+0

@aquatorrent - 這將是一個不同的問題,我們不知道錯誤是不能回答的(所以請問一個詳細說明問題的新問題)。 – Quentin 2012-04-17 06:17:49

+0

@昆汀丁:是嗎? o.o但是我認爲錯誤和第一個一樣..> – aquatorrent 2012-04-17 06:23:55

0
  • 內容應放置在<body>而不是<head>。唯一可以放在<head>中的東西是腳本(一次不操作DOM的腳本),樣式和其他類型。有關您的網頁的元數據。所有出現在頁面的其餘部分應在<body>

  • 雖然我最近知道id「ED元素暴露同名的全局變量作爲id,指的是元素,它的ID,你不應該參考這樣的元素。你應該像document.getElementById()這樣做是安全的。

  • 爲了安全執行腳本,請將<script>標記放置在內容後面,但在關閉<body>元素之前。這可確保腳本引用的所有元素都已存在。


<!DOCTYPE html> 
<html> 
    <head> 
     <!-- title, meta, styles, non-DOM scripts up here --> 
    </head> 
    <body> 

     <!-- everything that appears in the page here --> 

     <object id="login"> 
      <!-- ... ---> 
     </object> 

     <script> 
      //after the content, DOM manipulation scripts go here 

      var login = document.getElementById('login'); 

      //now "login" is the object element 

     </script> 

    </body> 
</html> 
+0

我將''和'