Javascript 动态下拉列表的高度为0

Javascript 动态下拉列表的高度为0,javascript,dynamic,dropdown,materialize,Javascript,Dynamic,Dropdown,Materialize,我正在尝试用javascript动态创建HTML卡,其中包含 posts.forEach(函数(元素){ .... 消息+=' 如果我不使用动态添加创建按钮,则一切正常。通过如上所示动态添加按钮,菜单内容的高度为0: …即使检查显示其高度应为50px: 我也试过: 为每个帖子添加唯一的下拉内容(trigger1打开drop1,trigger2打开drop2,等等) 单独初始化每个触发器。我无法重现您遇到的问题,但下面的解决方案可能会给出一个想法,或者可能有助于解决问题。另外,请注

我正在尝试用javascript动态创建HTML卡,其中包含

posts.forEach(函数(元素){
....  
消息+='
  • 如果我不使用动态添加创建按钮,则一切正常。通过如上所示动态添加按钮,菜单内容的高度为0:

    …即使检查显示其高度应为50px:

    我也试过:

    为每个帖子添加唯一的下拉内容(trigger1打开drop1,trigger2打开drop2,等等)


    单独初始化每个触发器。

    我无法重现您遇到的问题,但下面的解决方案可能会给出一个想法,或者可能有助于解决问题。另外,请注意,下面的代码部分中做出了一些假设

    var指数=1;
    变量posts=[“post1”、“post2”、“post3”、“post4”、“post5”];
    posts.forEach(功能(元素){
    让post=document.createElement('div');
    post.id=“post”+索引;
    文件.正文.附件(邮政);
    //剩余工作。。
    让cloneDrop=document.getElementById(“dropTemplate”).cloneNode(true);
    cloneDrop.style.visibility=“可见”;
    cloneDrop.id=“drop”+索引;
    document.getElementById(“post”+索引).appendChild(cloneDrop);
    //剩余工作。。
    让消息='
    

  • 很自然,它不起作用。初始化组件时,它们会查找定义其行为的类或标识符(如下拉触发器)并附加这些行为。在这些组件初始化之后,您将创建元素,这样它们就不会有附加的行为。您需要做的是重新初始化所有组件或初始化您创建的组件manually@Eldar感谢您的回复。我不确定您是否熟悉Materialize库,但是m.AutoInit()命令应重新初始化新组件。“Auto Init允许您通过单个函数调用初始化所有具体化组件。请务必注意,您不能使用此方法传入选项。”这并不意味着它应初始化在函数调用后动态添加的组件
        posts.forEach(function(element) {
            ....  
            message += '<a class="dropdown-trigger btn-flat" data-target="drop1">';
            message += '<i class="material-icons">more_vert</i>';
            message += '</a>';
            document.getElementById("post" + index).innerHTML = message;
            index++;
          }, this);
          M.AutoInit();
    
         <ul id="drop1" class="dropdown-content">
             <li><a href="#!">one</a></li>
             <li><a href="#!">two</a></li>
             <li><a href="#!">three</a></li>
         </ul>