5

Estoy usando el complemento DataTables para jQuery para la tabla de dibujo en mi aplicación web. Todo funciona correctamente Pero una de las opciones es presionar un botón de detalles para abrir una ventana de información que tendrá valores adicionales. Ahora esa parte está funcionando correctamente, pero mi tabla está definida con clases, así que puedo cambiar el idioma dinámicamente cuando el usuario cambia de idioma usando el menú.Cómo cambiar el valor si la tabla ya está dibujada

Lo único que recibo es en inglés, como dije al principio.

Mi tabla predefinida:

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; 
} 

Cuando cambio el idioma y mi Javascript está cambiando cada valor a través del nombre de la clase, no pasa nada, pero para el resto de mi código esto funciona bien, pero para esta tabla predefinida no. ¿Alguna idea?

EDITAR

Este es un detector de eventos:

$('#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'); 
     } 
}); 

Así que cuando se hace clic en los botones que llaman fnFormatDetails() función, pero entonces su disponerse sólo ya que se encuentra. Entonces, cuando cambio dinámicamente el valor de esa tabla, nada está cambiando.

¿Necesita más información?

+2

Por favor edite la pregunta para mostrar * cómo se usa la función de tabla *, porque no hay nada en el presente para mostrar lo que realmente está intentando * hacer *. –

+2

Cómo muestra su tabla de detalles: en un cuadro de diálogo, superposición ... Tal vez esto no funcione porque está tratando de cambiar la clase de Elementos que no están agregados al DOM. – jmventar

+1

He editado mi respuesta –

Respuesta

4

Si lo entiendo correctamente, intenta cambiar dinámicamente el contenido de la tabla que siempre está en la página. No sé por qué lo pondría en su javascript, pero como está utilizando jQuery, sugiero un enfoque diferente.

Esto estaría en su archivo 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> 

Usaría id en lugar de clase porque esos valores son únicos.

Y el javascript para reemplazar el contenido de las etiquetas html.

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

Esto reemplazará el contenido HTML de la etiqueta con el id especificado con el contenido especificado como atributo.

Espero que eso te ayude.

+0

Voy a probar tu código y te puedo decir si funciona para mí –

1

1) Le sugiero que mire el aData en fnFormatDetails a través de console.log. Esto asegurará que la función se está ejecutando y está viendo los valores correctos en la matriz.

2) Intente borrar la tabla anterior por nTr.html ("") y vea si eso mejora algo.

Podría pegar la imagen de la tabla para que podamos entender mejor.

Cuestiones relacionadas