我有一个asp.net页面,我希望使用javascript在asp:DropDownList
的索引为0时隐藏页面上的div。
我知道如何隐藏div,但我确实需要帮助来了解如何使用javascript获取asp:DropDownLists
的选定索引。
这就是我在javascript中所拥有的:
function hideDiv() {
var drpCampDock = document.getElementById('drpListCampaignDocketTemplate');
var drpCampType = document.getElementById('drpCampaignType');
当它进行此检查时会出错。
if (drpCampDock.selectedIndex == 0) {
document.getElementById('divBuilderMain').style.visibility = 'hidden';
}
}
我得到的错误是
Microsoft JScript runtime error: Object required
答案 0 :(得分:3)
我猜您的问题是,呈现的select元素的(客户端)ID与asp:DropDownList
的服务器端ID不同(请查看在此处呈现的HTML源代码)浏览器确认这一点。)
要获得正确的客户端元素,您必须使用以下代码:
var drpCampType = document.getElementById('<%= drpCampaignType.ClientID %>');
或者,您可以将ASP.NET标记更改为此标记,并将div的ID和下拉列表的当前选择传递给javascript函数:
<asp:DropDownList ... onchange="hideDiv('divBuilderMain', this.value)" />
...
function hideDiv(divId, ddlIndex)
{
if (ddlIndex == 0) document.getElementById(divId).style.visibility = 'hidden';
}
答案 1 :(得分:2)
您使用的是.NET主页吗?
然后,您必须找出您的下拉列表的结果ID。在IE中调试页面(F12)并查看您获得的ID,它也将包含您母版页中的ID,因此您的函数没有找到正确的ID。
假设我的页面中有一个带按钮的更新面板(使用主页)
- 剪断 -
<ContentTemplate>
<asp:Button ID="Hiddenbutton" runat="server" Text="" />
</ContentTemplate>
- 剪断 -
使ID保持不变的一种方法是使用输入字段
<input type="hidden" id="unchangedHidden" value="<%=Hiddenbutton.ClientID%>" />
如果我想从Java中单击此按钮
function TestcodeBehind2()
{
var o =document.getElementById('unchangedHidden').getAttribute('value');
document.getElementById(o).click();
}
通过读取隐藏输入字段的值,我确定我会得到正确的ID,不管我是否使用了主页。
我发现使用
var o =document.getElementById('<%=Hiddenbutton%>');
并不总是导致我的主页上成功检索到ID。
答案 2 :(得分:0)
当我需要selectedIndex时,我会这样做:
var collx = document.getElementsByName("zmembertype");
for (ix = 0 ; ix < collx.length; ix++ ) {
if (collx[ix].checked)
temp = collx[ix].value;
}
我认为你需要一个循环?
答案 3 :(得分:0)
为了将来参考,解决这些问题的一个好方法是查看运行此脚本的页面的来源。例如,asp:dropdownlist以html呈现,通常看起来像这样。
<select>
<option value=""></option>
<option value="FirstOption">First option</option>
<option value="SecondOption">Second option</option>
</select>
基于此,您可以在hideDiv的脚本中执行以下操作
function hideDiv() {
var drpCampDock = document.getElementById('drpListCampaignDocketTemplate');
var drpCampType = document.getElementById('drpCampaignType');
var drpCampTypeValue = drpCampType.options[drpCampType.selectedIndex].value;
最后一行假设你'drpCampaignType'实际上是'select'元素的名称。如果'drpCampaignType'是周围元素的名称,请尝试类似
的内容var drpCampType = document.getElementById('drpCampaignType').getElementsByTagName('select')[0];
继续使用与上面相同的代码行,因为它会将drpCampType
分配给正确的select元素。
正如我所说,看看源代码来帮助你总是好的。
HTH
答案 4 :(得分:0)
在下拉变更事件
上调用JS函数,例如
<asp:DropDownList ID="ddl" onchange="linkURL(this)" runat="server">
</asp:DropDownList>
// JS功能
function linkURL(URL)
{
alert (URL.options[URL.selectedIndex].value);
}