क्या सामान्य पाठ को टेबल तत्व के भीतर बदलने का एक तरीका है जो HTML के शरीर के भीतर रखा गया है?
"नमस्ते" के साथ "हैलो" की जगह?
कृपया केवल jQuery के बिना जावास्क्रिप्ट का उपयोग करें ।
क्या सामान्य पाठ को टेबल तत्व के भीतर बदलने का एक तरीका है जो HTML के शरीर के भीतर रखा गया है?
"नमस्ते" के साथ "हैलो" की जगह?
कृपया केवल jQuery के बिना जावास्क्रिप्ट का उपयोग करें ।
hello, this is a text randomTexthelloहोना चाहिए hi, this is a text randomTexthello। हालांकि, अन्य सभी उत्तर यहां शब्दों के बजाय वर्णों की जगह ले रहे हैं।
जवाबों:
अपने HTML में एक स्ट्रिंग को बदलने के लिए एक और विधि का उपयोग करके आंतरिक HTML पर बदलें :
document.body.innerHTML = document.body.innerHTML.replace('hello', 'hi');
ध्यान दें कि यह helloआपके HTML कोड में किसी भी उदाहरण (जैसे वर्ग के नाम आदि) सहित पूरे शरीर के पहले उदाहरण को बदल देगा , इसलिए सावधानी के साथ उपयोग करें - बेहतर परिणामों के लिए, अपने कोड का उपयोग करके अपने प्रतिस्थापन के दायरे को सीमित करने का प्रयास करें document.getElementById या समान।
लक्ष्य स्ट्रिंग के सभी उदाहरणों को बदलने के लिए, gलोबेल ध्वज के साथ एक सरल नियमित अभिव्यक्ति का उपयोग करें :
document.body.innerHTML = document.body.innerHTML.replace(/hello/g, 'hi');
<script type="text/javascript"> window.onload = clear(); function clear() { document.body.innerHTML = document.body.replace('ü', 'n'); } </script>
window.onload = clear;कोष्ठक के बिना सेट "()"। जब आप लिखते हैं clear()तब आप वास्तव में फ़ंक्शन को निष्पादित करते हैं, लेकिन आप केवल फ़ंक्शन को ऑनलोड-हैंडलर को सौंपना चाहते हैं
नीचे दिया गया कार्य मेरे लिए पूरी तरह से काम करता है:
// Note this *is* JQuery, see below for JS solution instead
function replaceText(selector, text, newText, flags) {
var matcher = new RegExp(text, flags);
$(selector).each(function () {
var $this = $(this);
if (!$this.children().length)
$this.text($this.text().replace(matcher, newText));
});
}
यहाँ एक उदाहरण है:
function replaceAllText() {
replaceText('*', 'hello', 'hi', 'g');
}
$(document).ready(replaceAllText);
$('html').ajaxStop(replaceAllText);
आप भी ऐसा करने के लिए एक सीधा प्रतिस्थापन का उपयोग कर सकते हैं:
document.body.innerHTML = document.body.innerHTML.replace('hello', 'hi');
लेकिन इसके साथ सावधान रहें क्योंकि यह टैग, सीएसएस और स्क्रिप्ट को भी प्रभावित कर सकता है।
संपादित करें: शुद्ध जावास्क्रिप्ट समाधान के लिए इस विधि का उपयोग करें:
function replaceText(selector, text, newText, flags) {
var matcher = new RegExp(text, flags);
var elems = document.querySelectorAll(selector), i;
for (i = 0; i < elems.length; i++)
if (!elems[i].childNodes.length)
elems[i].innerHTML = elems[i].innerHTML.replace(matcher, newText);
}
मैंने इस फ़ंक्शन को साइड इफेक्ट्स (अब तक) के बिना सुरक्षित रूप से पाठ को बदलने के लिए समाप्त किया:
function replaceInText(element, pattern, replacement) {
for (let node of element.childNodes) {
switch (node.nodeType) {
case Node.ELEMENT_NODE:
replaceInText(node, pattern, replacement);
break;
case Node.TEXT_NODE:
node.textContent = node.textContent.replace(pattern, replacement);
break;
case Node.DOCUMENT_NODE:
replaceInText(node, pattern, replacement);
}
}
}
यह उन मामलों के लिए है जहां 16kB findAndReplaceDOMTextथोड़ा भारी हैं।
मुझे भी यही समस्या थी। मैंने अपने स्वयं के फ़ंक्शन को आंतरिक HTML पर प्रतिस्थापित का उपयोग करते हुए लिखा था, लेकिन यह एंकर लिंक और इस तरह से पेंच करेगा।
इसे सही ढंग से काम करने के लिए मैंने इसे पूरा करने के लिए एक पुस्तकालय का उपयोग किया।
लाइब्रेरी में एक भयानक एपीआई है। स्क्रिप्ट को शामिल करने के बाद मैंने इसे इस तरह बुलाया:
findAndReplaceDOMText(document.body, {
find: 'texttofind',
replace: 'texttoreplace'
}
);
मैं एक बहुत बड़ी स्ट्रिंग को बदलने की कोशिश कर रहा था और किसी कारण से नियमित अभिव्यक्ति कुछ त्रुटियों / अपवादों को फेंक रहा था।
इसलिए मुझे नियमित अभिव्यक्ति के लिए यह विकल्प मिला जो बहुत तेजी से चलता है। कम से कम यह मेरे लिए काफी तेज था:
var search = "search string";
var replacement = "replacement string";
document.body.innerHTML = document.body.innerHTML.split(search).join(replacement)
src: जावास्क्रिप्ट में स्ट्रिंग की सभी घटनाओं को कैसे बदलें?
डिफ़ॉल्ट जावास्क्रिप्ट स्ट्रिंग बदलें फ़ंक्शन का उपयोग करें
var curInnerHTML = document.body.innerHTML;
curInnerHTML = curInnerHTML.replace("hello", "hi");
document.body.innerHTML = curInnerHTML;
ऊपर दिए गए समाधान को बहुत बड़े दस्तावेज़ पर लागू करने का प्रयास करें, बहुत कम तारों की जगह जो इनर HTML या इनरटेक्स्ट में मौजूद हो सकता है, और आपका html डिज़ाइन सबसे अच्छा हो जाता है
इसलिए मैं सबसे पहले HTML डोम नोड्स के माध्यम से केवल टेक्स्ट नोड तत्वों को पिक करता हूं, इस तरह
function textNodesUnder(node){
var all = [];
for (node=node.firstChild;node;node=node.nextSibling){
if (node.nodeType==3) all.push(node);
else all = all.concat(textNodesUnder(node));
}
return all;
}
textNodes=textNodesUnder(document.body)
for (i in textNodes) { textNodes[i].nodeValue = textNodes[i].nodeValue.replace(/hello/g, 'hi');
`और बाद में मैंने उन सभी को चक्र में प्रतिस्थापन लागू किया
जैसा कि मैंने इस त्रुटि को रखा, कायरता-भविष्य के जवाब में एक उदाहरण जोड़ना चाहता था :
Uncaught TypeError: element.childNodes is not iterable
इस तरह का उपयोग करें:
replaceInText(document.body,"search term","replacement");
यह मेरे लिए jQuery के चयनकर्ताओं के साथ काम नहीं किया।
मैं नया हूं, Javascriptऔर बस इन कौशलों को सीखना शुरू कर दिया है। कृपया जांच लें कि पाठ को बदलने के लिए नीचे की विधि उपयोगी है या नहीं।
<script>
var txt=document.getElementById("demo").innerHTML;
var pos = txt.replace(/Hello/g, "hi")
document.getElementById("demo").innerHTML = pos;
</script>
कभी-कभी बदलने से document.body.innerHTMLपृष्ठ पर कुछ JS स्क्रिप्ट्स टूट जाती हैं। यहाँ संस्करण है, जो केवल textतत्वों की सामग्री बदलता है :
function replace(element, from, to) {
if (element.childNodes.length) {
element.childNodes.forEach(child => replace(child, from, to));
} else {
const cont = element.textContent;
if (cont) element.textContent = cont.replace(from, to);
}
};
replace(document.body, new RegExp("hello", "g"), "hi");