在这里具有实体化功能的菜鸟。 在使用gscripts的网络应用程序上工作时,我从Google表格中获得了一个学生的记录集(付款和发票),并使用该信息填充了2个物化表。该代码可以正常工作,但是由于某种原因,第一行之后分别向每个表中添加了一个,我无法弄清楚它的来源
//get invoices with id
function getInvoicesForID(studentAltID) {
var invoicesForID = [];
//get general invoices sheet and values
var sInvoices = ss.getSheetByName("Invoices");
var dataInvoices = sInvoices.getDataRange().getValues();
//get invoices info for id onto returning array. !!note date needs to be a string!!
for(var i = 0; i < dataInvoices.length; i++){
if(dataInvoices[i][4]==studentAltID){
var invDate = Utilities.formatDate(dataInvoices[i][0],"GMT+1","yyyy-MM-dd");
invoicesForID.push([invDate.toString(),dataInvoices[i][1],dataInvoices[i][2],dataInvoices[i][3]]);
}
}
Logger.log(invoicesForID);
return invoicesForID;
}
记录器带有返回发票数组中的数据,显示以下内容:
[19-07-13 00:46:48:608 EDT] [[2019-01-31,34073.0,Matricula 2019,298854.0],[2019-02-01,34337.0, Pension 2019年2月,130171.0],[2019-03-01,34603.0,Pension Mar 2019,130171.0],[2019-04-01,34872.0,Pension Abr 2019,130171.0],[2019-05-01,35138.0,May Pension 2019,130171.0],[2018-08-31,1051.0,Asistencia 2018,508972.0],[2019-06-01,35403.0,2019年6月退休金,130171.0],[2019-07-01,35667.0,2019年7月退休金,130171.0 ]]
更新html付款表的tbody部分的我的javascript是这个
//get each item invoiced so far for student and create rows with the data to display in html
function getInvoices(stIDInvData) {
try{
//if data was received updated the textboxes of the page with the info retrieved.
if (stIDInvData != null){
document.getElementById("tableInvoices").innerHTML += stIDInvData.map(function(row){
return "<tr><td>" + row[0] + "</td><td>" + row[1] + "</td><td>" + row[2] + "</td><td>" + formatMoney(row[3]) + "</td></tr>";
});
}
}catch(e){
alert("getInvoices error" + e);
}
}
和该表的index.html是这样的:
<div class="input-field col s6">
<table class="highlight">
<thead>
<tr>
<th>Fecha</th>
<th>Referencia</th>
<th>Memo</th>
<th>Valor</th>
</tr>
</thead>
<tbody id="tableInvoices">
<!--content created dinamically -->
</tbody>
</table>
</div>
感谢您的帮助。谢谢。
答案 0 :(得分:2)
map
返回一个字符串数组。由于您要为innerHTML
分配一个数组,因此使用toString()
将数组强制为字符串,并添加逗号分隔符。
您可以join
map
返回的带有空字符串的数组,如下所示:
document.getElementById("tableInvoices").innerHTML += stIDInvData.map(function(row) {
return "<tr><td>" + row[0] + ....;
}).join(' ') // <--
以下是演示此问题的有效片段:
const array = [1, 2, 3, 4]
document.querySelector('#array').innerHTML += array
document.querySelector('#joined').innerHTML += array.join(' ')
<span id="array"></span><br>
<span id="joined"></span>