2012-04-17 58 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

我将''和'