【问题标题】:How to display dropdown menu items inside the dropdown using javascript?如何使用javascript在下拉菜单中显示下拉菜单项?
【发布时间】:2018-08-16 13:40:59
【问题描述】:

下面是我的html:

 <div class="row">
    <div class="col-lg-11">
         <ul  class="list-unstyled" id="slider">
         </ul>
    </div>                        
 </div>

下面是我的javascript:

var locationbegin="<div class='form-group'><label>Location</label><select  
class='form-control' id='location'><option>test</option>";
$("#slider").append(locationbegin); 

var locationoptions = "<option>tester</option>";
$("#slider").append(locationoptions);

var locationend="</select> </div>";
$("#slider").append(locationend);

下面是输出:

问题是测试人员从位置下拉列表中出来。我不确定我要去哪里错了。你也可以使用http://rendera.herokuapp.com/ 来渲染代码。

编辑:分离 javascript 的原因是因为代码之间有一些其他的 javascript 代码。

【问题讨论】:

    标签: javascript php twitter-bootstrap drop-down-menu


    【解决方案1】:

    您在不使用正确的 HTML 时会出错。您必须关闭标签,否则浏览器会在计算时为您执行此操作。 append 首先将您的 HTML 转换为 NodeList(这导致 select 和 div 被关闭),然后将 i 附加到滑块。现在,如果您在该 HTML 结构上进一步追加 options,您实际上是在封闭的 div 后面追加这些内容。

    您应该保留对 select 的引用,以便能够随时添加更多 optino:

    a) 创建周围的标记:

    var myFormField = $('<div class="form-group"><label>Location</label><select class="form-control" id="location"><option>test</option></select></div>')
    

    b) 找到select 并将其存储到变量中:

    var mySelect = myFormField.find('#location');
    

    c) 添加任意数量的选项

    mySelect.append('<option>Value 2</option>');
    mySelect.append('<option>Value 3</option>');
    mySelect.append('<option>Value 4</option>');
    

    【讨论】:

    • 我明白这一点。我查看了我的 html 并注意到自动添加了结束标签。但是,由于中间 java 脚本使用来自数据库的数据,因此我需要将它们分开。有没有办法在不自动添加结束标签的情况下追加?
    • @ShuyaibAbdullah 不,没有办法在 HTML 中禁用结束标签。您对使用 HTML 有一个错误的概念。请使用正确的 DOM 方法来访问和操作元素。上面给出了一个非常简单的例子。
    【解决方案2】:

    哦,这不是它的工作原理。 .append 将自动添加 closing tags 如果您的 HTML 字符串没有它。

    所以在第一次追加调用之后,你的 html 会变成:

    <div class='form-group'>
        <label>Location</label>
        <select class='form-control' id='location'>
          <option>test</option>
        </select>
    </div>
    

    在这个 HTML 之后会发生进一步的插入。

    因此,请执行以下操作:

    var locationbegin="<div class='form-group'><label>Location</label><select  
    class='form-control' id='location'><option>test</option>";
    var locationoptions = "<option>tester</option>";
    var locationend="</select> </div>";
    
    $("#slider").append(locationbegin + locationoptions + locationend);
    

    【讨论】:

    • 谢谢。我查看了我的 html 并注意到自动添加了结束标签。但是,由于中间 java 脚本使用来自数据库的数据,因此我需要将它们分开。有没有办法在不自动添加结束标签的情况下追加?
    猜你喜欢
    • 2021-07-04
    • 2012-05-27
    • 2017-06-09
    • 2022-10-15
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 2018-03-06
    • 2013-08-12
    相关资源
    最近更新 更多