Javascript错误:无法读取属性'txtAlias'个,共个未定义http://localhost
Javascript error: Cannot read property 'txtAlias' of undefined http://localhost/Test.aspx
我最近将我的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;
只是作为一种测试。
- Http服务工厂将未定义的返回到Angular中的控制器
- 从 Angular 数据工厂中的 HTTP POST 请求接收未定义的结果
- Vue资源$http未定义
- Angularjs自定义服务变量未被$http成功定义
- AngularJS HTTP 资源 - 响应函数未定义
- AngularJs $http变量未定义
- 使用 NodeJS 的请求模块进行 HTTP 身份验证,返回未定义的正文
- 未定义使用 HTTP GET 请求返回对象
- 为什么我收到错误“错误未定义'http..'不是一个函数”
- 从工厂返回控制器$http承诺时未定义
- 为什么我在此控制器中得到“未定义$http”
- 无法使用$http读取未定义的属性“成功”
- Meteor.http 方法在服务器上未定义
- 尽管注入了$http,但它在服务中是未定义的
- Angular HTTP GET请求在浏览器中工作时返回未定义
- AngularJS Factory$http无法读取属性'长度'的未定义
- 带有Ajax的JavaScript和HTTP请求输出未定义的显示2
- AngularJS http.jsonp回调未定义
- Javascript错误:无法读取属性'txtAlias'个,共个未定义http://localhost
- 未捕获的引用错误: 未定义$http