5

मैं अपने वेब ऐप पर ड्राइंग टेबल के लिए jQuery के लिए डेटाटेबल्स प्लगइन का उपयोग कर रहा हूं। सब ठीक से काम कर रहा है। लेकिन एक विकल्प है कि एक सूचना विंडो खोलने के लिए विवरण बटन दबाएं जिसमें अतिरिक्त मूल्य होंगे। अब वह हिस्सा सही तरीके से काम कर रहा है लेकिन मेरी तालिका कक्षाओं के साथ परिभाषित की गई है, इसलिए जब उपयोगकर्ता मेनू का उपयोग कर भाषा बदलता है तो मैं भाषा को गतिशील रूप से बदल सकता हूं।तालिका को पहले से खींचा जाने पर मान कैसे बदलें

मुझे जो चीज मिल रही है वह अंग्रेजी में है, जैसा कि मैंने शुरुआत में घोषित किया था।

मेरे पूर्वनिर्धारित तालिका:

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

जब मैं भाषा बदल सकते हैं और मेरी जावास्क्रिप्ट वर्ग के नाम के माध्यम से प्रत्येक मान से बदल रहा है, कुछ नहीं होता, लेकिन मेरे कोड के बाकी के लिए यह ठीक है, लेकिन इस पूर्वनिर्धारित तालिका के लिए काम करता है ऐसा नहीं करता। कोई उपाय?

$('#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() फ़ंक्शन को कॉल करें, लेकिन फिर अपनी खींचा केवल के रूप में सेट किया जाता है:

संपादित

यह एक घटना श्रोता है। तो जब मैं उस तालिका के मूल्य को गतिशील रूप से बदलता हूं तो कुछ भी नहीं बदल रहा है।

क्या आपको कुछ और विवरण चाहिए?

+2

कृपया यह दिखाने के लिए प्रश्न संपादित करें कि तालिका फ़ंक्शन का उपयोग कैसे किया जाता है *, क्योंकि वर्तमान में यह दिखाने के लिए कुछ भी नहीं है कि आप वास्तव में * क्या करने का प्रयास कर रहे हैं। –

+2

आप अपनी विवरण तालिका कैसे प्रदर्शित करते हैं: एक संवाद पर, ओवरले ... शायद यह काम नहीं करता है क्योंकि आप उन तत्वों की श्रेणी को बदलने की कोशिश कर रहे हैं जो DOM में शामिल नहीं हैं। – jmventar

+1

मैंने अपना उत्तर –

उत्तर

4

यदि मैं सही ढंग से समझता हूं, तो आप पृष्ठ पर हमेशा मौजूद तालिका की सामग्री को गतिशील रूप से बदलने की कोशिश करते हैं। मुझे नहीं पता कि आप इसे अपने जावास्क्रिप्ट में क्यों डाल देंगे लेकिन जैसा कि आप 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> 

मैं कक्षा के बजाय आईडी का उपयोग करूंगा क्योंकि ये मान अद्वितीय हैं।

और HTML टैग की सामग्री को प्रतिस्थापित करने के लिए जावास्क्रिप्ट।

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

यह सामग्री आप विशेषता के रूप में निर्दिष्ट के साथ id से संबद्ध टैग के HTML सामग्री की जगह लेगा।

मुझे उम्मीद है कि आपकी मदद करता है।

+0

में परिवर्तन नहीं करता है, मैं आपका कोड आज़माउंगा और I0ll आपको बताएगा कि यह मेरे लिए काम कर रहा है या नहीं –

1

1) मैं सुझाव दूंगा कि आप console.log के माध्यम से fnFormatDetails में aData को देखें। यह सुनिश्चित करेगा कि फ़ंक्शन निष्पादित हो रहा है और आप सरणी में सही मान देख रहे हैं।

2) पुरानी तालिका को nTr.html ("") द्वारा साफ़ करने का प्रयास करें और देखें कि इससे कुछ भी सुधारता है या नहीं।

क्या आप बेहतर समझने के लिए टेबल की छवि पेस्ट कर सकते हैं।