पहले, आपको अनुच्छेद तक पहुंचने का कोई तरीका चाहिए। के रूप में आवश्यक
<p id="foo">Lorem Ipsum <a href="#">Link</a> <div ... </div> </p>
उसके बाद, आप document.getElementById
का उपयोग करने वाले तत्व का उपयोग कर सकते हैं और उसके बच्चों की जगह:: आप इसे इस तरह के "foo" के रूप में एक id
विशेषता, देने के लिए चाहते हो सकता है
var p = document.getElementById('foo'),
firstTextNode = p.firstChild,
newSpan = document.createElement('span');
// Append "Lorem Ipsum" text to new span:
newSpan.appendChild(document.createTextNode(firstTextNode.nodeValue));
// Replace old text node with new span:
p.replaceChild(newSpan, firstTextNode);
यह बनाने के लिए अधिक विश्वसनीय, आप पहले बच्चे को एक्सेस करने से पहले p.normalize()
पर कॉल करना चाहते हैं, यह सुनिश्चित करने के लिए कि एंकर से पहले सभी टेक्स्ट नोड्स एक के रूप में विलय हो जाएं।
Oook, तो तुम एक तत्व के साथ एक पाठ नोड का एक हिस्सा बदलना चाहते हैं। यहाँ कैसे मैं यह कर करेंगे:
function giveMeDOM(html) {
var div = document.createElement('div'),
frag = document.createDocumentFragment();
div.innerHTML = html;
while (div.firstChild) {
frag.appendChild(div.firstChild);
}
return frag;
}
var p = document.getElementById('foo'),
firstChild = p.firstChild;
// Merge adjacent text nodes:
p.normalize();
// Get new DOM structure:
var newStructure = giveMeDOM(firstChild.nodeValue.replace(/Lorem Ipsum/i, '<span>$&</span>'));
// Replace first child with new DOM structure:
p.replaceChild(newStructure, firstChild);
निम्न स्तर पर नोड्स के साथ कार्य करना में होने के लिए एक बुरा स्थिति का एक सा है, विशेष रूप से आपकी मदद करने के लिए किसी भी अमूर्तता के बिना। मैंने "Lorem Ipsum" वाक्यांश से उत्पादित एक HTML स्ट्रिंग से एक डोम नोड बनाकर सामान्यता की भावना बनाए रखने की कोशिश की है। Purists शायद इस समाधान को पसंद नहीं है, लेकिन मुझे यह पूरी तरह से उपयुक्त लगता है।
संपादित: अब एक दस्तावेज टुकड़ा का उपयोग कर! धन्यवाद Crescent Fresh!
लेकिन, लेकिन ... "Lorem Ipsum" के लिए * खोज * (और 'firstTextNode' के अंदर मिलान करने वाले स्थान पर स्थानांतरित करें) कहां है? –
आह, उस पर ध्यान दिया, अब इस पर काम कर रहा है। – James
@ जे-पी: मेरा अपवोट आपके संपादन का इंतजार कर रहा है !! –