我有一个 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/