代码之家  ›  专栏  ›  技术社区  ›  Noble-Surfer

如何从vb从js中绘制的div中获取html元素?

  •  0
  • Noble-Surfer  · 技术社区  · 6 年前

    我最近开始开发一个用vb.net编写的web应用程序,以前从未使用过vb。

    有一个网页,welcome.aspx,它是由一些vb代码welcome.aspx.vb绘制的。

    我想使用javascript为已经存在于该页面上的html元素添加一些功能。我要添加功能的html元素是一个下拉菜单,它显示在表单的隐藏部分。

    只有在窗体上的其他位置选择了特定单选按钮时,才会显示该隐藏节。

    在显示隐藏部分的JS函数中,我可以使用行看到浏览器控制台中的下拉元素:

    var hiddenwrapper = $("." + hiddenF).css('display', 'none'); 
    console.log("hiddenwrapper: ", hiddenwrapper);
    

    这个 console.log 语句在浏览器控制台中显示以下内容:

    hiddenwrapper:  r.fn.init [div#conbox_2_2_104938.conbox_104938, prevObject: r.fn.init(1)]
    

    如果我在控制台中展开该行,就会得到下拉框对象:

    0: div#conbox_2_2_104938.conbox_104938
    

    以及它的所有属性。

    如果我检查浏览器中HTML的结构(使用控制台的“元素”选项卡),我可以看到下拉是嵌套在A里面的。 <section></section> 在一个 <div></div> . 那 <div></div> 有身份证 Panel1 .

    在WelCuff.ASPX文件中,我可以看到 面板1 定义为:

    <asp:Panel ID="Panel1" runat="server">
    </asp:Panel>
    

    在浏览器中,还有多个HTML元素嵌套在 面板1 div,但正如您所见,在.ASPX文件中没有任何面板。

    我知道此下拉列表的“问题类型”为“4”(即,就本表单而言,下拉列表就是这样定义的)。

    我可以看到,这个问题类型是由下面的代码处理的:

    If rs2("QuestionType").ToString = "4" Then
        QuestionType = "Radio"
        'RadioButton List so get values
        If rs2("Personal").ToString = "True" Then
            Dim genField As RequiredRadioButtonList = DirectCast(Panel1.FindControl("personal_radio" & x.ToString & "_" & xx.ToString), RequiredRadioButtonList)
            Answer = genField.SelectedValue
            If rs2("OtherBox").ToString = "True" Then
    
                Dim genField2 As TextBox = DirectCast(Panel1.FindControl("inputOther" & x.ToString & "_" & xx.ToString), TextBox)
                Answer = genField.SelectedValue + " " + genField2.Text
            Else
                Answer = genField.SelectedValue
            End If
    
    
        Else
            Dim genField As RequiredRadioButtonList = DirectCast(Panel1.FindControl("radio" & x.ToString & "_" & xx.ToString), RequiredRadioButtonList)
            Answer = genField.SelectedValue
            If rs2("OtherBox").ToString = "True" Then
    
                Dim genField2 As TextBox = DirectCast(Panel1.FindControl("inputOther" & x.ToString & "_" & xx.ToString), TextBox)
                Answer = genField.SelectedValue + " " + genField2.Text
            Else
                Answer = genField.SelectedValue
            End If
            Response.Write("radioanswer" + x.ToString & "_" & xx.ToString + "<br/>" + Answer + "<br/><br/>")
        End If
    
    End If
    

    使用纯html/javascript,在js中获取下拉菜单对象 document.getElementById('conbox');

    如果html元素是由vb绘制的,那么如何直接从js中获取它呢?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Mayamiko Matope    6 年前

    使用clientid方法获取vb应用的id。所以如果你的下拉列表的id是'dropdown1',你的代码如下

    document.getElementById('<%=DropDown1.ClientID %>');
    

    这应该可以让您访问元素