5

Tôi đang sử dụng plugin DataTables cho jQuery để vẽ bảng trên ứng dụng web của tôi. Mọi thứ đều hoạt động chính xác. Nhưng một trong các tùy chọn là nhấn nút chi tiết để mở cửa sổ thông tin sẽ có giá trị bổ sung. Bây giờ phần đó đang hoạt động chính xác nhưng bảng của tôi được định nghĩa với các lớp để tôi có thể thay đổi ngôn ngữ động khi người dùng thay đổi ngôn ngữ bằng menu.Cách thay đổi giá trị nếu bảng đã được rút ra

Điều duy nhất tôi nhận được bằng tiếng Anh, như tôi đã khai báo lúc đầu.

bảng được xác định trước của tôi:

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

Khi tôi thay đổi ngôn ngữ và javascript của tôi đang thay đổi từng giá trị thông qua tên lớp, không có gì xảy ra, nhưng đối với phần còn lại của mã của tôi này hoạt động tốt nhưng đối với bảng được xác định trước này không. Bất kỳ ý tưởng?

EDIT

Đây là một người biết lắng nghe sự kiện:

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

Vì vậy, khi nút được nhấp tôi gọi fnFormatDetails() chức năng nhưng sau đó rút ra nó chỉ vì nó được thiết lập. Vì vậy, khi tôi tự động thay đổi giá trị của bảng đó, không có gì thay đổi.

Bạn có cần thêm chi tiết không?

+2

Vui lòng chỉnh sửa câu hỏi để hiển thị * cách chức năng bảng được sử dụng *, bởi vì hiện tại không có gì để hiển thị những gì bạn đang thực sự cố gắng * làm *. –

+2

Cách bạn hiển thị bảng chi tiết của mình: trên hộp thoại, lớp phủ ... Có thể điều này không hiệu quả vì bạn đang cố gắng thay đổi lớp Phần tử không được thêm vào DOM. – jmventar

+1

Tôi đã chỉnh sửa câu trả lời của mình –

Trả lời

4

Nếu tôi hiểu chính xác, bạn cố gắng tự động thay đổi nội dung của bảng luôn ở trên trang. Tôi không biết tại sao bạn sẽ đặt nó trong javascript của bạn nhưng khi bạn đang sử dụng jQuery tôi đề nghị một cách tiếp cận khác nhau.

Điều này sẽ nằm trong tệp html của bạn.

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

Tôi sẽ sử dụng id thay vì lớp vì các giá trị đó là duy nhất.

Và javascript để thay thế nội dung của thẻ html.

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

Điều này sẽ thay thế nội dung html của thẻ có id được chỉ định bằng nội dung bạn chỉ định làm thuộc tính.

Tôi hy vọng sẽ giúp bạn.

+0

Tôi sẽ thử mã của bạn và tôi sẽ cho bạn biết nếu nó làm việc cho tôi –

1

1) Tôi khuyên bạn nên xem aData trong fnFormatDetails qua console.log. Điều này sẽ đảm bảo rằng hàm đang được thực hiện và bạn đang thấy các giá trị đúng trong mảng.

2) Thử xóa bảng cũ bằng nTr.html ("") và xem điều đó có cải thiện gì không.

Bạn có thể dán hình ảnh của bảng để chúng tôi hiểu rõ hơn không.

Các vấn đề liên quan