动态添加div

时间:2012-02-24 09:04:01

标签: javascript html html-table alignment

我有一个表,可以在新用户变为活动状态时动态添加行。该功能将添加一个显示用户名称的新行和一个激活灯箱以显示更多信息的按钮。名称和按钮放在一个单元格中,但我想右键对齐按钮并在单元格中左对齐名称。我发现这篇文章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;
    }
}

3 个答案:

答案 0 :(得分:2)

试试这个:

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

答案 1 :(得分:1)

问题是你需要将用户名和按钮放在你创建的浮动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);

此外,如果要添加多于一行,div将获得“left”和“right”的重复ID。改为使用一个类。

最后,您不需要将rightDiv的宽度设置为50%。它应该自动右对齐,如果那是你想要的。

答案 2 :(得分:0)

不要单独给出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%;
}