当我像这样调用下面的函数时:
showTableTest("db", "testTable", "action", "context","projectName")
我想在函数中使用参数[2]作为JSON名称(即“action”)。
直接引用名称时如下:
genTable+="<td>" + result.rows[q].doc.action + "</td>";
返回正确的值
然而,当我像这样引用它们时:
genTable+="<td>" + result.rows[q].doc.column[2] + "</td>";
我收到以下错误:
Uncaught (in promise) TypeError: Cannot read property '2' of undefined
如何正确传递此值?
function showTableTest (dbName,idOfTable) {
var column = arguments;
var argNum = arguments.length;
var genTable = "<table class='responsive'>";
genTable+= "<tr>";
for (var i=2, tot=argNum; i < tot; i++) {
genTable+= "<th>" + arguments[i] + "</th>";
}
genTable+= "</tr>";
db.allDocs({include_docs: true, attachments: true}).then(function (result) {
for (var q=0, tot=result.rows.length; q < tot; q++) {
genTable+="<tr>";
for (var c=2, all=argNum; c < all; c++) {
genTable+="<td>" + result.rows[q].doc.action + "</td>";
genTable+="<td>" + result.rows[q].doc.column[2] + "</td>";
}
genTable+="</tr>";
}
genTable+="</table>";
document.getElementById(idOfTable).innerHTML = genTable;
});
}
答案 0 :(得分:0)
有一个演示如何通过code snippet
中的密钥从json调用,所以你的代码
genTable+="<td>" + result.rows[q].doc.column[2] + "</td>";
被改为
genTable+="<td>" + result.rows[q].doc[column[1]] + "</td>";
showTableTest("name", "id");
function showTableTest(dbName, idOfTable) {
var column = arguments;
var argNum = arguments.length;
console.info(column[1]);//your idOfTable index is No 1
}
result.rows[q].doc[column[2]]
column[2]
是关键,你可以像这样打电话