2012-09-05 14 views
31

संभव डुप्लिकेट:
How to retrieve the text of a DOM Text node?टेक्स्ट नोड्स के साथ काम करते समय मुझे "डेटा", "नोडवेल्यू", "टेक्स्टकंटेंट" या "पूर्ण टेक्स्ट" फ़ील्ड का उपयोग करना चाहिए?

अपने प्रयोगों डोम उत्परिवर्तन पर्यवेक्षकों को संभालने के लिए में मैंने देखा है कि जब target एक पाठ नोड है वहाँ चार क्षेत्रों सब के नए पाठ वाले हैं नोड

  • data
  • nodeValue
  • textContent
  • wholeText

वहाँ एक "सबसे अच्छा अभ्यास" इन क्षेत्रों में से है जिसके लिए मैं का उपयोग करना चाहिए है?

क्या कुछ अन्य ब्राउज़रों या पुराने डोम मानकों के साथ संगतता के लिए हैं? क्या इससे कोई फर्क पड़ता है कि क्या मैं पाठ को संशोधित बना रहा हूं? यदि कोई सबसे अच्छा है तो दूसरों का उद्देश्य क्या है?

+0

आप सही हैं, मुझे जवाब देने से पहले खोजना चाहिए था।) – raina77ow

+0

@ raina77ow: मैंने खोज की, लेकिन एसओ खोजने के लिए एक से अधिक तरीके हैं और मैंने अपना प्रश्न पोस्ट करने के बाद खोज जारी रखा (-: – hippietrail

उत्तर

28
इन सभी मैं data निर्णय लेना होगा की

: यह नोड्स CharacterData केवल इंटरफेस (Text और Comment वाले) को लागू करने के लिए परिभाषित किया गया है। दूसरों के लिए इस संपत्ति तक पहुंचने का प्रयास undefined देता है।

nodeValue टेक्स्ट नोड्स के लिए अनिवार्य रूप से data जैसा ही है, लेकिन वास्तव में विशेषता और टिप्पणी नोड्स के लिए भी परिभाषित किया गया है। और मैं आमतौर पर अपने कार्यक्रमों को जल्दी विफल करना चाहता हूं।)

textContent, मेरे लिए, कुछ पूरी तरह से अलग है, क्योंकि यह एक नोड और उसके वंश की पाठ्य सामग्री का प्रतिनिधित्व करता है। यह wholeText के साथ, शायद एक पाठ नोड की तुलना में ग्रंथों को अधिक जटिल संरचनाओं से एकत्र करने के लिए और अधिक उपयोग किया जाना चाहिए।

ने कहा कि textContent और wholeText को डीओएम स्तर 3 (= अधिक आधुनिक) में परिभाषित किया गया था।

+0

मैंने वास्तव में यहां पूछने से पहले 'डेटा' का उपयोग किया था। मुझे लगता है कि आंशिक रूप से क्योंकि यह पहले वर्णानुक्रमिक था और आंशिक रूप से क्योंकि यह सबसे संक्षिप्त था। यद्यपि अधिक निर्धारक कारणों के लिए अच्छा है! (-: – hippietrail

+0

असल में ऐसा लगता है कि इन चारों में से केवल टेक्स्ट सामग्री ही लिखने योग्य है ... (या बल्कि, यह केवल एकमात्र ऐसा है जो उस वास्तविक को अपडेट करना प्रतीत होता है प्रदर्शित सामग्री)। यह क्यों है? – Michael

+2

सुधार: 'डेटा' को केवल "पाठ नोड्स के लिए परिभाषित नहीं किया गया है", लेकिन [कैरेक्टरडाटा इंटरफ़ेस] के लिए (http://www.w3.org/TR/DOM-Level-3- कोर/core.html # आईडी-एफएफ 21 ए 306), जो न केवल [टेक्स्ट नोड्स] द्वारा प्राप्त होता है (http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-1312295772) , लेकिन [टिप्पणी नोड्स] (http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-1728279322)। –