2010-05-27 12 views
9

के साथ डालने का प्रयास करता हूं तो मैं कक्षा टेक्स्ट प्रदर्शित करने की कोशिश कर रहा हूं जब कक्षा numObj के तत्व पर क्लिक किया जाता है। किसी कारण से मुझे NaNNaNaNaNNaNNaNaNNN मिलता है जहां मैं नीचे दिए गए कोड में खोजफॉर्म चर के परिणाम देखने की अपेक्षा करता हूं।जब मैं कुछ एचटीएमएल को एक डीवी तत्व में jQuery

मुझे पता है कि NaN एक संख्या के लिए खड़ा है। मुझे समझ में नहीं आता है कि जावास्क्रिप्ट एक संख्या की उम्मीद क्यों कर रहा है? मुझे समझ में नहीं आता कि यह परवाह क्यों करता है।

$(".numObj").live('click',function(){ 
    var preId = $(this).attr('preId'); 
    var arrayPos = $(this).attr('numArrayPos'); 

     alert(preId +" "+arrayPos); 

     var searchForm = "<table border='0' cellspacing='0' cellpadding='4' id='add-tag2'>"+ 
      +"<tr class='normal'><td bgcolor='#EEEEEE' valign='bottom' nowrap='nowrap'><span class='normal-small'>"+ 
      +"<input name='predicate-name2' type='text' class='normal' id='predicate-name2' size='4' />"+ 
      +"</span></td>"+ 
      +"<td bgcolor='#EEEEEE' valign='bottom' nowrap='nowrap'><span class='normal-small'>&lt;=</span></td>"+ 
      +"<td bgcolor='#EEEEEE' valign='bottom' nowrap='nowrap'>x</td>"+ 
      +"<td valign='bottom' bgcolor='#EEEEEE'>&lt;=</td>"+ 
      +"<td valign='bottom' bgcolor='#EEEEEE'><span class='normal-small'>"+ 
      +"<input type='text' name='object-object2' id='object-object2' class='normal' size='4' />"+ 
      +"</span></td>"+ 
      +"</tr>"+ 
      +"</table>"; 
     $(".numObj").filter("[preId='"+preId+"']").filter("[numArrayPos='"+arrayPos+"']").html(searchForm); 

    }); 

उत्पन्न कोड numObj वर्ग है कि इस

<td><div class="numObj" preid="73" numarraypos="5"><span class="normal">585.0</span></div></td> 
+0

आपके numArrayPos विशेषता में आपके जेएस और एचटीएमएल में अलग-अलग सीएएसई हैं - क्या यह एक टाइपो था? यदि नहीं, तो आपको विशेषता तक पहुंचने में समस्याएं होंगी। – scunliffe

+1

आप डीबग क्यों नहीं करते? Var searchForm के साथ-साथ कई '+' संकेत होते हैं। – Kangkan

+0

@ कंगकन - जावास्क्रिप्ट को डिबग करने के लिए आप क्या सलाह देते हैं - यह मेरे पास एक बीबीआईजी समस्या है। – Ankur

उत्तर

14

समस्या, जैसा कि अन्य ने इंगित किया है + ऑपरेटर है। समेकित तारों के अलावा, यह गणितीय जोड़ के रूप में भी प्रयोग किया जाता है। जावास्क्रिप्ट की गतिशील टाइपिंग की वजह से, एकल + अकेले एक स्ट्रिंग पर के उपयोग के कारण होगा स्ट्रिंग एक संख्या में परिवर्तित किया: अपने कोड की

+"12"; // -> 12 
+"10" + +"12" // -> 22 

कई लाइनों लाइन और के अंत में + ऑपरेटर है नई लाइन की शुरुआत। दूसरा + एक असामान्य गणितीय जोड़ के रूप में माना जाएगा और convert the string to a number का प्रयास करेगा। निम्नलिखित पर विचार करें:

"Hello" + 
+ "World" // -> "HelloNaN" 
+1

धन्यवाद एंडी - मैं आपका उत्तर चुन रहा हूं क्योंकि यह NaN त्रुटि के बारे में अधिक जानकारी देता है। – Ankur

10

आप एक से अधिक से अधिक ऑपरेटरों एक दूसरे के बगल है की तरह कुछ लग रहा है।

var searchForm = "<table border='0' cellspacing='0' cellpadding='4' id='add-tag2'>"+ 
+"<tr class='normal'><td bgcolor='#EEEEEE' valign='bottom' nowrap='nowrap'><span class='normal-small'>"+ 

ध्यान दें कि पहली पंक्ति के अंत में एक प्लस ऑपरेटर है, और अंतिम पंक्ति की शुरुआत में एक है। इन प्लस ऑपरेटरों में से एक को हटाएं (प्रत्येक पंक्ति के लिए), और आप शायद त्रुटि से छुटकारा पायेंगे।

वैसे, JSLint इन त्रुटियों को एक झिल्ली में पाता है।

+0

स्मार्ट सोच! –

3

पूरे searchForm चर बनाना var searchForm

var searchForm = "<table border='0' cellspacing='0' cellpadding='4' id='add-tag2'>" 
     +"<tr class='normal'><td bgcolor='#EEEEEE' valign='bottom' nowrap='nowrap'><span class='normal-small'>" 
     +"<input name='predicate-name2' type='text' class='normal' id='predicate-name2' size='4' />" 
     +"</span></td>" 
     +"<td bgcolor='#EEEEEE' valign='bottom' nowrap='nowrap'><span class='normal-small'>&lt;=</span></td>" 
     +"<td bgcolor='#EEEEEE' valign='bottom' nowrap='nowrap'>x</td>" 
     +"<td valign='bottom' bgcolor='#EEEEEE'>&lt;=</td>" 
     +"<td valign='bottom' bgcolor='#EEEEEE'><span class='normal-small'>" 
     +"<input type='text' name='object-object2' id='object-object2' class='normal' size='4' />" 
     +"</span></td>" 
     +"</tr>" 
     +"</table>"; 
0

की प्रत्येक पंक्ति अंत बंद + प्रतीकों ले लो केवल मौजूद पर एक पंक्ति यह काम करता है ... लेकिन इस खूबसूरत नहीं है। यदि कोई बेहतर समाधान है तो मैं जानना चाहूंगा।

+2

क्या आप पृष्ठ के भीतर एचटीएमएल छिपा सकते हैं और अपनी जरूरतों के हिसाब से बदल सकते हैं? – Sam

+1

मैं सैम के सुझाव का बहुत समर्थन करता हूं। – GlenCrawford

+0

हां मैं वास्तव में ऐसा करने जा रहा हूं। यह और अधिक समझ में आता है। – Ankur

संबंधित मुद्दे