如果表格已经绘制,如何更改值

How to change value if table is already drawn

本文关键字:何更改 绘制 表格 如果      更新时间:2023-09-26

我正在使用 jQuery 的数据表插件在我的 Web 应用程序上绘制表格。 一切正常。但其中一个选项是按详细信息按钮打开一个信息窗口,该窗口将具有其他值。现在该部分工作正常,但我的表是用类定义的,因此当用户使用菜单更改语言时,我可以动态更改语言。

我唯一得到的是英语,正如我在开始时宣布的那样。

我的预定义表:

function fnFormatDetails ( nTr )
{
    var aData = oTable.fnGetData( nTr );
    var sOut = '<table cellpadding="5" cellspacing="0" border="0" style="background-color:whitesmoke; padding-left:10%; padding-right:10%; width:100%">';
    sOut += '<tr><td style="text-align:left"><span class="id_prog">ID Program : '+aData[0]+'</span></td><td style="text-align:left"><span class="id_in_perc">Increment : '+aData[3]+'</span></td></tr>';
    sOut += '<tr><td style="text-align:left"><span class="id_var">Machine position : '+aData[1]+'</span></td><td style="text-align:left"><span class="id_tot_in_var">Total inc : '+aData[4]+'</span></td></tr>';
    sOut += '<tr><td style="text-align:left"><span class="id_dti_var">DTI : '+aData[2]+'</span></td></tr>';
    sOut += '</table>';
    return sOut;
}

当我更改语言并且我的 javascript 通过类名更改每个值时,没有任何反应,但对于我的其余代码,这工作正常,但对于这个预定义的表则不然。知道吗?

编辑

这是一个事件侦听器:

$('#jphit tbody td img').live( 'click', function () {
        var nTr = $(this).parents('tr')[0];
        if ( oTable.fnIsOpen(nTr) )
        {
            /* This row is already open - close it */
            this.src = "images/plus-icon.png";
            oTable.fnClose( nTr );
        }
        else
        {
            /* Open this row */
            this.src = "images/minus-icon.png";
            oTable.fnOpen( nTr, fnFormatDetails(nTr), 'details' );
        }
} );

因此,当单击按钮时fnFormatDetails()我调用该函数,但随后仅在设置时绘制该函数。因此,当我动态更改该表的值时,没有任何变化。

您需要更多细节吗?

如果我理解正确,您尝试动态更改页面上始终存在的表格的内容。我不知道你为什么要把它放在你的javascript中,但是当你使用jQuery时,我建议一种不同的方法。

这将在您的 html 文件中。

<table id="myTable">
    <tr>
        <td><span id="id1"><!-- content will load here --></span></td>
        <td><span id="id2"><!-- content will load here --></span></td>
    </tr>
</table>

我会使用 id 而不是类,因为这些值是唯一的。

和 javascript 替换 html 标签的内容。

function fnFormatDetails ( nTr ) {
    var aData = oTable.fnGetData( nTr );
    $("#id1").html("My data here " + aData[0]);
    $("#id2").html("My data here " + aData[1]);
    ...
}

这会将标记的 html 内容替换为指定 id 和您指定为属性的内容。

我希望这对你有所帮助。

1)我建议您通过console.log查看fnFormatDetails中的aData。这将确保函数得到执行,并且您在数组中看到正确的值。

2) 尝试通过 nTr.html(") 清除旧表,看看是否有任何改进。

您能否粘贴表格的图像以便我们更好地理解。