【问题标题】:Add div Dynamically动态添加 div
【发布时间】:2012-03-14 17:49:00
【问题描述】:

我有一个表格,可以在新用户活跃时动态添加行。该函数将添加一个显示用户名的新行和一个用于激活灯箱以显示更多信息的按钮。名称和按钮放在一个单元格中,但我想右对齐按钮并左对齐单元格内的名称。我发现这篇文章Right align and left align text in same HTML table cell 展示了如何使用 HTML 中的 div 来完成此操作,但我需要动态执行此操作。有人猜吗?我尝试了以下代码,它可以工作,但不能证明我想要的名称和按钮。它只是将它们集中在单元格内。我会很感激任何帮助。

function addRow(tableID, user, phone, age, city, zipCode) {

    var table = document.getElementById(tableID);

    var rowCount = table.rows.length;
    var row = table.insertRow(rowCount);

    var colCount = table.rows[0].cells.length;

    for(var i=0; i<colCount; i++) {

         tabbody=document.getElementsByTagName("tbody").item(2);
         cell1 = document.createElement("TD"); //Create New Row
         leftDiv = document.createElement("div"); //Create left div
         leftDiv.id = "left"; //Assign div id
         leftDiv.setAttribute("style", "float:left;width:50%;"); //Set div attributes

         rightDiv = document.createElement("div"); //Create right div
         rightDiv.id = "right"; //Assign div id
         rightDiv.setAttribute("style", "float:right;width:50%;"); //Set div attributes

         user_name = document.createTextNode(user + ' '); //Set user name

         details_btn = document.createElement("button"); //Create details button
         btn_txt = document.createTextNode("Details"); //Create button text
         details_btn.appendChild(btn_txt);  //Add "Details" to button text
         details_btn.onclick = function(){moreInfo(user, phone, age, city, zipCode);}; //Assign button function

         cell1.appendChild(leftDiv);
         cell1.appendChild(user_name); //Add name to row
         cell1.appendChild(rightDiv);
         cell1.appendChild(details_btn); //Add button to row
         row.appendChild(cell1); //Add row to table
         tabbody.appendChild(row);

        var newcell = row.insertCell(i);

        newcell.innerHTML = table.rows[0].cells[i].innerHTML;
    }
}

【问题讨论】:

    标签: javascript html html-table alignment


    【解决方案1】:

    试试这个:

    function creatediv() {
        var newdiv = document.createElement('div');
        newdiv.setAttribute('id', id);
        newdiv.style.width = 300;
        newdiv.style.height = 300;
        newdiv.style.position = "absolute";
        newdiv.style.background = "#C0C0C0";
        newdiv.innerHTML = "Dynamic Div";
        document.body.appendChild(newdiv);
    }
    

    【讨论】:

      【解决方案2】:

      问题是您需要将用户名和按钮放在您创建的浮动 div 中,而您将它们放置在与 div 相同的单元格中,但与div。

      所以尝试更改此部分:

       cell1.appendChild(leftDiv);
       cell1.appendChild(user_name); //Add name to row
       cell1.appendChild(rightDiv);
       cell1.appendChild(details_btn); //Add button to row
       row.appendChild(cell1); //Add row to table
       tabbody.appendChild(row);
      

      到这里:

       leftDiv.appendChild(user_name); // Add name to left div
       rightDiv.appendChild(details_btn); // Add button to right div
       cell1.appendChild(leftDiv);
       cell1.appendChild(rightDiv);
       row.appendChild(cell1); //Add row to table
       tabbody.appendChild(row);
      

      另外,如果要添加多于 1 行,则 div 将获得“left”和“right”的重复 ID。改用类。

      最后,您不需要将 rightDiv 的宽度设置为 50%。如果这是您所追求的,它应该会自动右对齐。

      【讨论】:

        【解决方案3】:

        不要单独给出css规则,而是像这样直接使用css规则集:

        div.className = "div_class_right/left";  //for creating right/left div respectively.
        

        并在您的 css 中像这样创建规则集 div_class :

        .div_class_right/left{
            float : right/left;
            width : 50%;
        }
        

        【讨论】:

        • 这是最好的方法。它只缺少一条规则:text-align: right/leftfloat 本身不对齐 DIV 中的文本。
        • 感谢更正,您可能是对的,但发帖人希望将 DIV 本身与其父 TD 对齐,而不是将文本对齐到 div。
        • 是他吗? “我想右对齐按钮和左对齐名称......”对我来说,他想将按钮放在单元格的右侧,将名称放在同一单元格的左侧。 DIV 只是实现这一点所必需的。
        猜你喜欢
        • 2013-06-13
        • 1970-01-01
        • 1970-01-01
        • 2020-10-03
        • 1970-01-01
        • 2015-12-19
        • 2017-10-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多