asp用javascript

时间:2011-06-06 09:07:49

标签: javascript asp.net drop-down-menu

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

5 个答案:

答案 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);
    }