【问题标题】:Accessing hidden field value in javascript在javascript中访问隐藏字段值
【发布时间】:2012-11-14 19:46:22
【问题描述】:

我的表单中有一个隐藏字段,我正在服务器上设置隐藏字段的值并尝试从 javascript 访问该值,

我收到错误:无法获取属性“值”的值:对象为空或未定义

如果我查看源,隐藏字段值已设置,并且隐藏字段的 ID 与我正在调用的 ID 相同。

ASPX

            var v = document.getElementById('hxValue').value;
            <asp:HiddenField ID="hxValue" runat="server"/>

VB

            hxValue.Value = "Value1"

我记得以前这样做过,它应该相对简单,但由于某种原因,我没有做对。

【问题讨论】:

    标签: javascript asp.net vb.net hidden-field


    【解决方案1】:

    您可以使用innerText 而不是value 来检索hxValue 的值。

    var v = document.getElementById('hxValue').innerText
    

    如果你使用jQuery,你也可以这样做

    var v = $("#hxValue").val();
    

    【讨论】:

    • 我尝试了 innerText 但得到 - 无法获取属性“innerText”的值:对象为 null 或未定义 @Darren Davies
    • ID 在客户端可能实际上并不称为 hxValue,因为 ASP.NET 可能会添加它自己的前缀。试试:document.getElementById('').value;正如瑜伽士所建议的那样。
    • 由于经典 ASP.NET 使用的控件概念,生成的 HTML 中的控件 ID 不是您在服务器端使用的那些(ASP.NET 允许页面上具有相同 ID 的多个元素,但单个父元素中的一个)
    • @NikolaRadosavljević 但是当我在运行时查看源代码时,反映的控件的 ID 肯定是分配给它的 ID?
    • 您在呈现的 HTML 中看到的 ID 是您想要的 ID。调试时在 Visual Studio 中看到的 ID 不一样。在 Visual Studio 调试器中,您应该查看 ClientID。在 .NET 4 中,引入了 ClientIDMode 以允许更可预测地生成 ID。
    【解决方案2】:

    试试&lt;asp:HiddenField ID="hxValue" runat="server" Value=""/&gt;
    然后通过id调用并设置值

    【讨论】:

      【解决方案3】:

      试试这个

      var v = document.getElementById('<%= hxValue.ClientID %>').value;
      

      问题在于 Hidden Field 是服务器端控件,而您提供的 ID 是服务器端 ID,您必须获取该控件的客户端 ID 才能在客户端 JavaScript 或 Jquery 中引用它。

      更新

      将此脚本放在页面末尾,就在&lt;/body&gt; 之前

      <script type="text/javascript" language="javascript">
        var v = document.getElementById('<%= hxValue.ClientID %>').value;
      </script>
      </body>
      

      【讨论】:

      • 好的,我已经尝试像上面那样获取控件的客户端 ID,但仍然无法获取值,我得到的对象是 null 或未定义。
      • 请在页面加载完成后使用 Jquery Ready 方法访问 var v = document.getElementById('').value;
      【解决方案4】:

      您的代码将起作用。对于简单的表格,只需添加

      <asp:HiddenField ClientIDMode="static" ID="hxValue" runat="server"/>
      

      您需要使用来查找客户端 ID

      '<%=hxValue.ClientID%>'
      

      【讨论】:

        【解决方案5】:

        好的,在脚本运行之前,我的隐藏字段的值似乎没有设置,因此接收到一个空值。我假设在服务器页面加载上放置断点,脚本会确定是否在脚本运行之前设置了控件,但似乎没有。

        固定如下:

                    <html xmlns="http://www.w3.org/1999/xhtml" >
                    <head>
        
                    <title></title>
        
                    <script type="text/javascript">
                        function GetHiddenValues() {
                            var v = document.getElementById('<%= hxValue.ClientID %>').value;
                        }
                    </script>
                    </head>
        
                    <body onload="GetHiddenValues() ;">
        
                    <form runat="server">
        
                    <asp:HiddenField ClientIDMode="static" ID="hxValue" runat="server"/>
        
                    </form>
                    </body>
                    </html>
        

        感谢大家的帮助。

        【讨论】:

        • 感谢这项工作。无需在 onload 中运行,以防万一让任何人感到困惑。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多