Javascript错误:无法读取未定义的属性'txtAlias'http://localhost/Test.aspx
我最近将C#ASP.Net 4.0应用程序从Windows 2003 IIS 6升级到Windows 2008 IIS 7,并且我的一些Javascript没有回应,它适用于Windows 2003 & IIS6。在下面的简单的例子,我得到了以下JavaScript错误:Javascript错误:无法读取未定义的属性'txtAlias'http://localhost/Test.aspx
“类型错误:无法读取属性 'txtAlias' 未定义的[HTTP://本地主机:61003 /宴/ Test.aspx文件中:10]
的逻辑很简单当你填写名字和姓氏时,别名字段应该显示名字+姓氏
Fyi,我在IIS 7中使用集成模式,我用Win 2008和IIS 7在两台机器上测试并得到在我的Win 2003 & IIS 6服务器上工作正常,我不知道是什么原因造成的,我已经花了5个小时试图找到一个解决方案,如果有人可以帮忙,那会为我节省一些我的头发:)
顺便说一下,我使用的web.config是创建一个Web应用程序时生成的默认值。 谢谢你!
<%@ 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搭配的道路,而不是服务器级别。
你可以尝试形式的东西:
document.getElementById('txtAlias').value = 123;
只是作为一个测试。
谢谢你的工作。然而,我怎么能在我的应用程序中的其他地方的下面的代码行上实现它:'Link.Attributes.Add(“href”,String.Format(“JavaScript:window.opener.document。{0} .value = \'{1:d} \';窗口。close();“,Request.QueryString [”field“],e.Day.Date));' – Charlako 2011-06-11 00:51:29
尝试window.opener.document.forms ['Form1'] – 2011-06-11 00:58:31
更改ID命名会做,但更好的是,使用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; – 2011-06-11 00:22:48