Javascript错误:无法读取属性'txtAlias'个,共个未定义http://localhost

Javascript error: Cannot read property 'txtAlias' of undefined http://localhost/Test.aspx

本文关键字:未定义 http 错误 localhost 读取 Javascript txtAlias 属性      更新时间:2023-09-26

我最近将我的C#ASP.Net 4.0应用程序从Windows 2003 IIS 6升级到Windows 2008 IIS 7,但我的一些Javascript没有响应,它可以与Windows 2003&在下面的简单示例中,我得到了以下Javascript错误:

"TypeError:无法读取未定义的属性"txtAlias"[http://localhost:61003/Sabbat/Test.aspx:10]

逻辑很简单。当您填写FirstName和LastName时,Alias字段应显示FirstName+LastName。

Fyi,我在IIS 7中使用集成模式,我在Win 2008和IIS 7的两台机器上进行了测试,但都得到了相同的错误。它在我的Win2003&IIS 6服务器。我不知道是什么原因造成的,我已经花了5个小时试图找到解决方案。如果有人能帮忙,那会帮我省下一些头发:)

顺便说一句,我使用的web.config是创建web应用程序时生成的web.config的默认值。谢谢你!!!

<%@ Page Title="Home Page" Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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 id="Head1" runat="server">
    <title></title>
    <script type="text/javascript">
    function onFocusAlias() {
        document.Form1.txtAlias.value = document.Form1.txtFirstName.value + " " + document.Form1.txtLastName.value;
    }   
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <table>
    <tr>
    <td>
        First Name <asp:TextBox ID="txtFirstName" Runat="server" MaxLength="50" /></td>
    <td>
    Last Name <asp:TextBox ID="txtLastName" Runat="server" MaxLength="50" /></td>
    <td>
    Alias <asp:TextBox ID="txtAlias" Runat="server" MaxLength="100" Width="208px" onfocus="onFocusAlias();" />
    </td>
    </tr>
    </table>
    </div>
    </form>
</body>
</html>

服务器版本不应该影响JavaScript(因为这一切都在客户端的浏览器中处理),但如果.NET引擎发生了更改,我想它可能会向浏览器呈现不同的HTML。

我注意到的第一件事是form标记的id属性是"form1",JavaScript引用的是"form1"。不同的情况可能是罪魁祸首。当然,为了保持一致性,并将其作为潜在故障加以消除,这是值得的。

此外,这就是我的JavaScript有点模糊的地方,当你在JavaScript中引用document.Form1时,它是通过id属性还是通过name属性来识别元素?我真的不确定。但是,如果是后者,那么.NET引擎可能没有像以前那样添加name属性。

最终,呈现的HTML是什么样子的?因为这是橡胶与JavaScript相遇的地方,而不是在服务器级别。

将id更改为name即可,但更好的做法是使用jQuery并执行以下操作:

function onFocusAlias()
{
    $('#txtAlias').val($('#txtFirstName').val() + " " + $('#txtLastName').val();
}

这是一个没有更改标记的非jQuery版本:

function onFocusAlias()
{
    document.getElementById('txtAlias').value = document.getElementById('txtFirstName').value + " " + document.getElementById('txtLastName').value;
}

JavaScript区分大小写。您正在引用document.Form1,但表单元素的ID为form1。在您显示的标记中,document.Form1是未定义的。

您可以尝试以下形式:

document.getElementById('txtAlias').value = 123;

只是作为一种测试。