表单元格中的Javascript选择

表单元格中的Javascript选择,javascript,select,html-table,Javascript,Select,Html Table,我想向表中的每一行添加一个select(下拉列表)。 该表使用Javascript创建,并使用JQuery从xml文件导入动态内容。 我成功导入了所有内容,但下拉列表仅显示在最后一行。 如果你能帮我把每一行的内容都写下来,我将不胜感激 下面是仅使用空白选择的代码提取(导入的内容存储在这些元素中)。所有输出(如“行”)仅用于测试目的。“Numrows”也用于测试目的 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml

我想向表中的每一行添加一个select(下拉列表)。 该表使用Javascript创建,并使用JQuery从xml文件导入动态内容。 我成功导入了所有内容,但下拉列表仅显示在最后一行。 如果你能帮我把每一行的内容都写下来,我将不胜感激

下面是仅使用空白选择的代码提取(导入的内容存储在这些元素中)。所有输出(如“行”)仅用于测试目的。“Numrows”也用于测试目的

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
     <meta charset="utf-8" >

    <title>table select test</title>
</head>
<body>

    <table id="scrolltable">
    </table>

<script type="text/javascript">
    var tabbody = document.getElementById("scrolltable");

    var types = document.createElement("select");
    var units = document.createElement("select");

    parseTable(3, types, "row ", units);

    function parseTable(numrows, types, limits, units) {
        for (i = 0; i < numrows; i++) {
            var row = document.createElement("tr");
            var cell1 = document.createElement("td");
            cell1.style.width="300px";
            cell1.appendChild(types);
            row.appendChild(cell1);
            var cell2 = document.createElement("td");
            cell2.innerHTML = limits + i;
            cell2.style.width = "100px";
            row.appendChild(cell2);
            var cell3 = document.createElement("td");
            cell3.appendChild(units);
            row.appendChild(cell3);
            tabbody.appendChild(row);
        }
    }
</script>
</body>
</html>

表选择测试
var tabbody=document.getElementById(“滚动表”);
变量类型=document.createElement(“选择”);
var units=document.createElement(“选择”);
可解析表(3,类型,“行”,单位);
函数解析表(numrow、类型、限制、单位){
对于(i=0;i
如果没有最起码的例子,可能很难找出问题所在,但我的猜测是:

您只在循环之前创建类型和单位元素,因此反复附加相同的对象,每次将其中一个对象附加到单元格时,都会从原始单元格中取出并放入新的单元格中。“appendChild”就是这样做的,它不克隆元素,而是使用相同的元素()


如果在for的每个步骤中都创建了一个新的select元素,那么应该很好=)

类型和
单元定义一次,因此它们是单个元素。因此,它们被移动到您上次调用appendChild的位置。如果要查看发生了什么,请尝试添加
警报(“”)
如果要将其添加到每一行中,则需要在每一行中添加新实例:

function parseTable(numrows, types, limits, units) {
    for (i = 0; i < numrows; i++) {
        var row = document.createElement("tr");
        var cell1 = document.createElement("td");
        cell1.style.width="300px";
        types = document.createElement("select");
        cell1.appendChild(types);
        row.appendChild(cell1);
        var cell2 = document.createElement("td");
        cell2.innerHTML = limits + i;
        cell2.style.width = "100px";
        row.appendChild(cell2);
        var cell3 = document.createElement("td");
        units = document.createElement("select");
        cell3.appendChild(units);
        row.appendChild(cell3);
        tabbody.appendChild(row);
    }
}
函数解析表(numrow、类型、限制、单位){
对于(i=0;i
非常感谢。将声明移动到循环中确实解决了这个问题。