Javascript 在包含HTML元素的JS变量中添加HTML代码

Javascript 在包含HTML元素的JS变量中添加HTML代码,javascript,jquery,html,innerhtml,Javascript,Jquery,Html,Innerhtml,我需要添加一个任务列表,然后单击我正在使用knockout js的html表中的一行。问题是,我只是从一行数据中添加de last task,需要在元素“$taskSelected”中为每个任务添加一个新的TR。这是我的密码 self.retrieveTask = function(data, event) { if (event.type=="click") { var id = data.Id;

我需要添加一个任务列表,然后单击我正在使用knockout js的html表中的一行。问题是,我只是从一行数据中添加de last task,需要在元素“$taskSelected”中为每个任务添加一个新的TR。这是我的密码

  self.retrieveTask = function(data, event) {
                if (event.type=="click") {
                    var id = data.Id;
                    var $taskSelected = event.currentTarget.parentElement.nextElementSibling;
                    $.get("@Url.Action("Method", "Controller")", { id: id })
                        .done(function(data) {
                            $.each(data, function(key, value) {
                                var html = "<tr><td>" +
                                    "</td>" +
                                    "<td>" +
                                    "  <div >" +
                                    + value.Type +
                                    "</div> " +
                                    "</td>" +
                                    "<td>" +
                                    " <div >" +
                                    value.Id +
                                    "</div> " +
                                    "</td>" +
                                   "</tr>";
                                $taskSelected.innerHTML=html;

                            });

                        }).fail(function() {
                            alert("error");
                        });
                };

            }
self.retrieveTask=函数(数据、事件){
如果(事件类型==“单击”){
var id=data.id;
var$taskSelected=event.currentTarget.parentElement.nextElementSibling;
$.get(“@Url.Action(“方法”、“控制器”),{id:id})
.完成(功能(数据){
$。每个(数据、函数(键、值){
var html=“”+
"" +
"" +
"  " +
+值。类型+
" " +
"" +
"" +
" " +
value.Id+
" " +
"" +
"";
$taskSelected.innerHTML=html;
});
}).fail(函数(){
警报(“错误”);
});
};
}
var$taskSelected包含另一行“
”我希望嵌套行。一些建议请尝试以下方法:

 self.retrieveTask = function(data, event) {
            if (event.type=="click") {
                var id = data.Id;
                var $taskSelected = event.currentTarget.parentElement.nextElementSibling;
                $.get("@Url.Action("Method", "Controller")", { id: id })
                    .done(function(data) {
                        var html = "";
                        $.each(data, function(key, value) {
                            html += "<tr><td>" +
                                "</td>" +
                                "<td>" +
                                "  <div >" +
                                + value.Type +
                                "</div> " +
                                "</td>" +
                                "<td>" +
                                " <div >" +
                                value.Id +
                                "</div> " +
                                "</td>" +
                               "</tr>";

                        });
                       $taskSelected.innerHTML=html;

                    }).fail(function() {
                        alert("error");
                    });
            };

        }
self.retrieveTask=函数(数据、事件){
如果(事件类型==“单击”){
var id=data.id;
var$taskSelected=event.currentTarget.parentElement.nextElementSibling;
$.get(“@Url.Action(“方法”、“控制器”),{id:id})
.完成(功能(数据){
var html=“”;
$。每个(数据、函数(键、值){
html+=“”+
"" +
"" +
"  " +
+值。类型+
" " +
"" +
"" +
" " +
value.Id+
" " +
"" +
"";
});
$taskSelected.innerHTML=html;
}).fail(函数(){
警报(“错误”);
});
};
}

我所做的就是将
var html
移动到每个
循环之外。这确保所有以前的HTML都保留在变量中,否则每次运行循环时都会覆盖
HTML
(这就是为什么只输出最后一个;)

您不能嵌套:“允许的内容:零个或多个或多个元素,或它们的混合”。如果您尝试创建嵌套行,“子”行的开始标记将关闭“父”行,并创建新行。感谢您的回答确实范围有误,顺便说一下,我这里最严重的错误是我的表的结构,正如Teemu所说。我修改了表的结构,并在当前行之后添加$(html).insertAfter($taskSelected)。再次感谢。