Javascript 为什么';是否在asp.net用户控件中正确触发textbox onchange事件?

Javascript 为什么';是否在asp.net用户控件中正确触发textbox onchange事件?,javascript,asp.net,html,asp.net-ajax,Javascript,Asp.net,Html,Asp.net Ajax,我有两个文本框,我正试图捕获onchange事件。这些文本框位于asp.net updatepanel中的用户控件内。每次更改文本框文本时,我都会收到一个“Microsoft JScript运行时错误:预期对象”错误,该错误不提供任何其他有用信息 代码如下: <script type="text/javascript"> function ResetOrientationImage() { var width = (+document.

我有两个文本框,我正试图捕获onchange事件。这些文本框位于asp.net updatepanel中的用户控件内。每次更改文本框文本时,我都会收到一个“Microsoft JScript运行时错误:预期对象”错误,该错误不提供任何其他有用信息

代码如下:

    <script type="text/javascript">
        function ResetOrientationImage() {
            var width = (+document.getElementById('<%= txtWidth.ClientID %>').value);
            var height = (+document.getElementById('<%= txtHeight.ClientID %>').value);
            if (width > height) {
                document.getElementById('<%= imgOrientation.ClientID %>').src = "images/buttons/Landscape.png";
            } else {
                document.getElementById('<%= imgOrientation.ClientID %>').src = "images/buttons/Portrait.png";
            }
        }
</script>
<asp:TextBox ID="txtWidth" runat="server" Width="50px" onchange="ResetOrientationImage()" Text="0"></asp:TextBox>
<asp:TextBox ID="txtHeight" runat="server" Width="50px" onchange="ResetOrientationImage()" Text="0"></asp:TextBox>
<asp:Image ID="imgOrientation" ImageUrl="~/images/buttons/Portrait.png" runat="server" />

函数ResetOrientationImage(){
变量宽度=(+document.getElementById(“”).value);
变量高度=(+document.getElementById(“”).value);
如果(宽度>高度){
document.getElementById(“”).src=“images/buttons/Landscape.png”;
}否则{
document.getElementById(“”).src=“images/buttons/trait.png”;
}
}
我认为这一定是javascript的问题,但我将这段代码放到了一个独立的.aspx页面中,它正确执行,没有错误

编辑 在Firebug中查找时,真正的错误是在执行页面时找不到resetOrientionImage函数。如果我将javascript从用户控件移到页面本身上,它就会像我预期的那样工作。为什么javascript不能存在于用户控件中?

这里有几点:

var width = (+document.getElementById('<%= txtWidth.ClientID %>').value);
var height = (+document.getElementById('<%= txtHeight.ClientID %>').value);
另外-请检查您的HTML如何输出,而不是.NET源代码。问题出在客户端,而不是服务器上。

这里有几点:

var width = (+document.getElementById('<%= txtWidth.ClientID %>').value);
var height = (+document.getElementById('<%= txtHeight.ClientID %>').value);

另外-请检查您的HTML如何输出,而不是.NET源代码。问题出在客户端,而不是服务器上。

我偶然发现了这个问题,它给出了我的答案:

我将javascript函数移动到一个外部文件中,并在后面的用户控制代码中引用它,如下所示:

    ScriptManager sm = ScriptManager.GetCurrent(Page);
    ScriptReference sr = new ScriptReference("~/scripts/ResetOrientationImage.js");
    if (!sm.Scripts.Contains(sr))
       sm.Scripts.Add(sr);

我偶然发现了一个问题,这个问题给了我答案:

我将javascript函数移动到一个外部文件中,并在后面的用户控制代码中引用它,如下所示:

    ScriptManager sm = ScriptManager.GetCurrent(Page);
    ScriptReference sr = new ScriptReference("~/scripts/ResetOrientationImage.js");
    if (!sm.Scripts.Contains(sr))
       sm.Scripts.Add(sr);

其他地方的javascript出现了问题,请在添加UserControls的页面中查找错误。您是否使用IE8+的javascript控制台查看了该错误?您是否调试了document.getElementById(“”).value和另一个返回值?其他地方的javascript出现了问题,请在添加UserControl的页面中查找错误您是否使用IE8+的javascript控制台查看了它,该控制台指向错误?你调试了什么
document.getElementById(“”).value
和另一个返回值了吗?谢谢你直接在parseInt上设置我-我在代码中更正了这一点。谢谢你直接在parseInt上设置我-我在代码中更正了这一点。