javascript - 通过索引访问数组元素的问题

标签 javascript html arrays node.js ejs

我正在尝试生成一个通用 HTML 表,其中列名称和内容根据选择而变化。 我本来希望通过 id 访问数组元素,但显然它无法正常工作。

这是我的代码:

<% records.forEach(function(record){ %>
<tr role="row" class="odd">
    <% for (var i = 0; i < noOfCols; i++) { %>
        <td tabindex="0"><%= record[i] %></td>
   <% } %>                                        
        <td nowrap="">
            <span class="dropdown">
                <a href="#" class="btn m-btn m-btn--hover-brand m-btn--icon m-btn--icon-only m-btn--pill" data-toggle="dropdown" aria-expanded="true">
                  <i class="la la-ellipsis-h"></i>
                </a>
                <div class="dropdown-menu dropdown-menu-right">
                    <a class="dropdown-item" href="#"><i class="la la-edit"></i> Edit Details</a>
                    <a class="dropdown-item" href="#"><i class="la la-leaf"></i> Update Status</a>
                    <a class="dropdown-item" href="#"><i class="la la-print"></i> Generate Report</a>
                </div>
            </span>
                <a href="#" class="m-portlet__nav-link btn m-btn m-btn--hover-brand m-btn--icon m-btn--icon-only m-btn--pill" title="View">
                    <i class="la la-edit"></i>
                </a>
        </td>
</tr> <% }); %>

<%= record[i] %>正在返回null不幸的是。

这是我的 app.js 代码块,用于路由到该页面:

app.get('/edit/:tblId', async function(req, res, next) {
console.log("***************** Edit Table *******************");

const allDatabases  = await dbInstance.genericQuery(dbQueries.allDbSQL);
const allTables     = await dbInstance.genericQuery(dbQueries.allTbSQL);

const singletable   = await dbInstance.genericQuery(dbQueries.singleTableSQL.replace('{tblId}', req.params.tblId));
const tableName     = await dbInstance.getTableName(req.params.tblId);
const columnNames   = await dbInstance.genericQuery(dbQueries.headersTbSQL.replace('{tblId}', req.params.tblId));

const records       = await dbInstance.getTableRecords(tableName);
const noOfCols      = await dbInstance.genericQuery(dbQueries.headersTbSQL.replace('col.column_name', 'count(1) colNo').replace('{tblId}', req.params.tblId));

console.log('SQL: ' + dbQueries.headersTbSQL.replace('col.column_name', 'count(1) colNo').replace('{tblId}', req.params.tblId))

console.log('noOfCols: ' + noOfCols[0].colNo);
console.log(records);
res.render('edit_table_new', {
    parameters: arrayOpsInstance.getMatchDBWithTables(allDatabases, allTables),
    tblName: tableName,
    pagePathDatabase: 'EDIT DATA - ' + singletable[0].database_name.toUpperCase(),
    pagePathSchema: singletable[0].schema_name.toUpperCase(),
    tableDesc: singletable[0].table_desc,
    headers: columnNames,
    records: records,
    noOfCols: Number(noOfCols[0].colNo)
});

});

这是记录数组:

[ RowDataPacket {
database_id: 1,
database_name: 'REFERA',
organization_id: 1,
database_type_id: 3,
database_alias: 'Refera Repository',
database_desc: 'Holds Refera Repository Information',
ip_number: 'localhost',
port_number: '3306',
service_name: 'refera',
username: 'uuu',
password: 'ppp' },

行数据包{ 数据库ID:2, database_name: 'MAKEIT 表', 组织 ID:1, 数据库类型 ID:1, database_alias: 'MAKEIT 临时表', database_desc: '保存 MAKEIT 临时表', ip_number: '本地主机', 端口号:'1521', 服务名称:'XE', 用户名:'uuu', 密码:'ppp'}]

如果您能提供帮助,我将不胜感激(我正在使用 NodeJS,并且更喜欢在 HTML 文件中生成 HTML 短语,而不是在脚本中计算)。

最佳答案

records 数组中的项目本身并不是数组 (RowDataPacket)。它们是对象,因此您不能像您那样使用这种 for 循环 迭代它们。 您可以使用

迭代对象键
for(let prop in obj){
    //access values with obj[prop]
}

关于javascript - 通过索引访问数组元素的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55032416/

相关文章:

javascript - 如何在 CoffeeScript 中定义全局变量?

javascript - 文本调整大小在 div 中不起作用

android - 创建像 xperia x8 主屏幕这样的 HTML 按钮

php - 如何抓取特定的API数据

javascript - 将应用程序上传到 HEROKU 时出现问题,异步失败。 H12

javascript - Laravel 5.5 Axios POST 导致 419 错误

javascript - 访问div内没有id的iframe(div有id)

javascript - magicScroll 仅预制动画第一次向下页面

php - LEFT JOIN,如果存在第二个表的结果,则添加到 PHP 中的数组

c - 输出数组和整数的商时出错