function OnSuccess(xml) {
document.getElementById("people").innerHTML = "<tr><td>Employee ID</td><td>First Name</td><td >Last Name</td></tr>";
$(xml).find('Table').each(function () {
var id = $(this).find('EmployeeID').text();
var fn = $(this).find('FirstName').text();
var ln = $(this).find('LastName').text();
//Create button
var btn = document.createElement("input");
//Set the attributes
btn.setAttribute("onclick", "ServiceCall3(id)");
btn.setAttribute("type", "button");
btn.setAttribute("value", "Info");
btn.setAttribute("name", id);
$('#people').append('<tr><td>' + id + '</td><td>' + fn + '</td><td>' + ln + '</td><td> '+ btn + '</td></tr>')
}
)};
嘿,这是我的函数,它是从xml文件创建一个表。 我需要的是添加一个id与读取参数相同的按钮来自xml,即每行的结尾。 我得到的不是按钮就是[object HTMLInputElement]。 请帮忙。
伟大,快速的反应。 你现在能告诉我如何将id值传递给ServiceCall3?或在ServiceCall3中使用它?
function serviceCall3(id) {
$.ajax({
type: "POST",
url: "../TestWebService.asmx/GetAll",
data: "{'data' :" + id + "}",
contentType: "application/json; charset=utf-8",
dataType: "xml",
success: OnSuccess3,
error: OnError
});
}
答案 0 :(得分:2)
问题是您正在尝试将DOM元素(btn
)连接成一个字符串(导致[object HTMLInputElement]
)。相反,你应该追加它:
$('#people').append(
$('<tr></tr>').append(
$('<td></td>').text(id),
$('<td></td>').text(fn),
$('<td></td>').text(ln),
$('<td></td>').append(btn)
)
);
这会创建行和四个单元格,而不会将内容连接到原始HTML中。
答案 1 :(得分:1)
id
已经是文字,因此只需id
代替$(id).text()
btn.setAttribute("name", id);
答案 2 :(得分:0)
var id = $(this).find('EmployeeID').text();
您已将id
指定为文字。
但同样,你正在写$(id).text()
btn.setAttribute("name", $(id).text());
用
更新上面一行 btn.setAttribute("name", id);
此外,您正尝试将btn附加到字符串。这是转换btn.toString以打印值。
而是使用单独添加btn
来解决问题。
答案 3 :(得分:0)
这是因为你将button-element写成一个字符串:
<td> '+ btn + '</td>