javascript - 在 JavaScript 函数的参数上传递多个控件

标签 javascript asp.net

我有一个 JS 端:

        function recolor(ddl, hdf) {

        var ColorHDF = document.getElementById(hdf); //Error Undefined

        ddl.style.backgroundColor = 'White';
        ColorHDF.value = 'White';
    }

还有这个 Asp.net 端:

            <asp:DropDownList ID="DDL_NumCadreLA_1" onchange="recolor(this, 'HDF_NumCadreLA_1');"  runat="server" Width="40" CssClass="reducedSize" Enabled="false"></asp:DropDownList>
            <asp:HiddenField ID="HDF_NumCadreLA_1" Value="load" runat="server"></asp:HiddenField>

使用'this'很容易获得对javascript函数的控制,但我无法将Hiddenfield控件放入其中以更改他的值,我应该如何获得它? (使用此代码,ColorHDF 未定义)

最佳答案

ASP.NET 控件的 ID 属性与最终 html 页面上元素的 ID 不同。加载页面时,ASP.NET 将为控件分配一个元素 ID - 在浏览器中查看页面源代码。有一篇很好的博客文章解释了事情here .

对于一个简单的页面,每次加载页面时分配的 ID 很可能都是相同的,但无法保证这一点。为了确保使用正确的元素 ID 调用您的 Javascript,请在​​您的 onchange 中使用以下代码:

recolor(this, '<%= HDF_NumCadreLA_1.ClientID %>');

加载页面时将插入正确的 ID。再次,检查浏览器中的页面源代码以查看其运行情况。

或者,您可以将隐藏字段的 ASP.NET 设置的 ClientIDMode 属性覆盖为 Static:

<asp:HiddenField ID="HDF_NumCadreLA_1" ClientIDMode="Static" Value="load" runat="server"></asp:HiddenField>

关于javascript - 在 JavaScript 函数的参数上传递多个控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30455181/

相关文章:

javascript - 如何使用变量访问不同的对象?

c# - 如何从另一个 .net API 调用 .net API?

c# - 如何在 Web 应用程序中对特定用户的文件夹和文件进行身份验证

asp.net - 使用 css 自定义 web.sitemap 的默认菜单样式

asp.net - 如何获得一个圆 Angular 矩形图形以跨越 ASP.NET GridView 标题行中的所有列?

javascript - 如何将 HTML 插入到 getElementByID.innerHTML 函数中

javascript - Node.js:根据 FormData 值设置 Multer 目标

javascript - 如何在没有 Flash 的情况下使用网络浏览器捕获和存储 h.264 格式的视频?

javascript - 我怎样才能只附加一次?

asp.net - 当数据源是 EF 上下文时,使用 Asp.Net MVC 3 的哪种方法