Javascript 如何将字符串正确解析为onclick方法
我有一个使用jquery创建的动态表。我面临的问题是,jquery干扰了我的字符串,因此无法将其正确解析为onclick方法Javascript 如何将字符串正确解析为onclick方法,javascript,jquery,Javascript,Jquery,我有一个使用jquery创建的动态表。我面临的问题是,jquery干扰了我的字符串,因此无法将其正确解析为onclick方法 for (var i = 0; i < data.result.list.length; i++) { var tr = $("<tr></tr>"); tr.append("<td>" + "<a onclick='" + data.result.list[i
for (var i = 0; i < data.result.list.length; i++)
{
var tr = $("<tr></tr>");
tr.append("<td>" + "<a onclick='" + data.result.list[i].cfunction + "'>" + data.result.list[i].cvalue + "</a>" + "</td>");
tr.append("<td>" + + "</td>");
table.append(tr);
}
有人能告诉我正确的方向吗?您需要对内部双引号进行转义
var func = data.result.list[i].cfunction.replace( /"/g, "\\\"" );
tr.append("<td>" + "<a onclick='" + func + "'>" + data.result.list[i].cvalue + "</a>" + "</td>");
您需要对内部双引号进行转义
var func = data.result.list[i].cfunction.replace( /"/g, "\\\"" );
tr.append("<td>" + "<a onclick='" + func + "'>" + data.result.list[i].cvalue + "</a>" + "</td>");
您应该使用以下命令修改代码:
tr.append(
$("<td></<td>").append(
$("<a></a>")
.attr({
"href" : "#"
})
.text(data.result.list[i].cvalue)
.attr({
"onclick" : data.result.list[i].cfunction
})
)
);
您应该使用以下命令修改代码:
tr.append(
$("<td></<td>").append(
$("<a></a>")
.attr({
"href" : "#"
})
.text(data.result.list[i].cvalue)
.attr({
"onclick" : data.result.list[i].cfunction
})
)
);
换行
"<a onclick='" + data.result.list[i].cfunction + "'>"
对此
'<a onclick="' + data.result.list[i].cfunction + '">'
换行
"<a onclick='" + data.result.list[i].cfunction + "'>"
对此
'<a onclick="' + data.result.list[i].cfunction + '">'
您可以修改数据中的cfunction项,如以下编码:
cfunction: "getMyMethod(\"My parameter\")",
这在控制台中起作用。请确保表ID存在:
var data = {
result: {
list: [
{
cfunction: "getMyMethod(\"My parameter 1\")",
cvalue: "1"
},
{
cfunction: "getMyMethod(\"My parameter 2\")",
cvalue: "2"
}
]
}
}
var table = $("#testTable");
for (var i = 0; i < data.result.list.length; i++) {
var tr = $("<tr></tr>");
tr.append("<td>" + "<a onclick='" + data.result.list[i].cfunction + "'>" + data.result.list[i].cvalue + "</a>" + "</td>");
tr.append("<td>" + + "</td>");
table.append(tr);
}
var getMyMethod = function (funcParam) {
console.log(funcParam);
};
您可以修改数据中的cfunction项,如以下编码:
cfunction: "getMyMethod(\"My parameter\")",
这在控制台中起作用。请确保表ID存在:
var data = {
result: {
list: [
{
cfunction: "getMyMethod(\"My parameter 1\")",
cvalue: "1"
},
{
cfunction: "getMyMethod(\"My parameter 2\")",
cvalue: "2"
}
]
}
}
var table = $("#testTable");
for (var i = 0; i < data.result.list.length; i++) {
var tr = $("<tr></tr>");
tr.append("<td>" + "<a onclick='" + data.result.list[i].cfunction + "'>" + data.result.list[i].cvalue + "</a>" + "</td>");
tr.append("<td>" + + "</td>");
table.append(tr);
}
var getMyMethod = function (funcParam) {
console.log(funcParam);
};
你能试试这个吗。并确保您的data.result.list[i].cfunction值为 getMyMethod“我的参数”
你能试试这个吗。并确保您的data.result.list[i].cfunction值为 getMyMethod“我的参数”
您能显示生成的HTML吗?请发布有关如何获取数据的代码。通过Ajax调用???@31piy我添加了它。你认为它清楚吗?你能记录data.result.list[i].c函数吗?像alert\Hello一样使用escape;您能显示生成的HTML吗?请发布有关如何获取数据的代码。通过Ajax调用???@31piy我添加了它。你认为它清楚吗?你能记录data.result.list[i].c函数吗?像alert\Hello一样使用escape;您好,在我将其解析为onclick函数时,正在生成内部双引号。首先没有内部双引号。您好,在我将其解析为onclick函数时,正在生成内部双引号。首先,没有内部双引号。虽然我已将另一个答案标记为已接受,但我发现此方法更具可读性和更好,非常感谢提供此方法。虽然我已将另一个答案标记为已接受,但我发现此方法更具可读性和更好,非常感谢提供此方法。