मैं DOM में एक तत्व को बदलना चाह रहा हूँ।
उदाहरण के लिए, एक <a>
तत्व है जिसे मैं एक जगह से बदलना चाहता हूं <span>
।
मैं कैसे जाऊंगा और वह करूंगा?
मैं DOM में एक तत्व को बदलना चाह रहा हूँ।
उदाहरण के लिए, एक <a>
तत्व है जिसे मैं एक जगह से बदलना चाहता हूं <span>
।
मैं कैसे जाऊंगा और वह करूंगा?
जवाबों:
प्रतिस्थापन का उपयोग करके () :
<html>
<head>
</head>
<body>
<div>
<a id="myAnchor" href="http://www.stackoverflow.com">StackOverflow</a>
</div>
<script type="text/JavaScript">
var myAnchor = document.getElementById("myAnchor");
var mySpan = document.createElement("span");
mySpan.innerHTML = "replaced anchor!";
myAnchor.parentNode.replaceChild(mySpan, myAnchor);
</script>
</body>
</html>
var a = A.parentNode.replaceChild(document.createElement("span"), A);
ए एक प्रतिस्थापित ए तत्व है।
A.replaceWith(span)
- माता-पिता की जरूरत नहींसामान्य रूप:
target.replaceWith(element);
पिछले पद्धति की तुलना में बेहतर / स्वच्छ तरीका।
आपके उपयोग के मामले के लिए:
A.replaceWith(span);
समर्थित ब्राउज़र्स - 94% अप्रैल 2020
यह प्रश्न बहुत पुराना है, लेकिन मैंने खुद को Microsoft प्रमाणन के लिए अध्ययन किया, और अध्ययन पुस्तिका में इसका उपयोग करने का सुझाव दिया गया:
oldElement.replaceNode(newElement)
मैंने इसे देखा और यह केवल IE में समर्थित होने के लिए लगता है। रवींद्र ..
मुझे लगा कि मैं इसे एक मज़ेदार साइड नोट के रूप में यहाँ जोड़ दूंगा;)
मेरे पास एक समान मुद्दा था और यह धागा मिला। बदलें ने मेरे लिए काम नहीं किया, और माता-पिता द्वारा जाना मेरी स्थिति के लिए मुश्किल था। इनर एचटीएमएल ने बच्चों को बदल दिया, जो कि मैं भी नहीं चाहता था। आउटरएचटीएमएल के इस्तेमाल से काम हो गया। मनाइए कि यह किसी और के लिए सहायक हो!
currEl = <div>hello</div>
newElem = <span>Goodbye</span>
currEl.outerHTML = newElem
# currEl = <span>Goodbye</span>
आप एक नोड का उपयोग करके बदल सकते हैं Node.replaceWith(newNode)
।
इस उदाहरण को मूल नोड से सभी विशेषताओं और बच्चों को रखना चाहिए:
const links = document.querySelectorAll('a')
links.forEach(link => {
const replacement = document.createElement('span')
// copy attributes
for (let i = 0; i < link.attributes.length; i++) {
const attr = link.attributes[i]
replacement.setAttribute(attr.name, attr.value)
}
// copy content
replacement.innerHTML = link.innerHTML
// or you can use appendChild instead
// link.childNodes.forEach(node => replacement.appendChild(node))
link.replaceWith(replacement)
})
माता-पिता को खोजने के बिना पहले से प्रस्तावित विकल्पों में सबसे आसान समाधान दिया गया है:
var parent = document.createElement("div");
var child = parent.appendChild(document.createElement("a"));
var span = document.createElement("span");
// for IE
if("replaceNode" in child)
child.replaceNode(span);
// for other browsers
if("replaceWith" in child)
child.replaceWith(span);
console.log(parent.outerHTML);
target.replaceWith(element);
यह करने के लिए आधुनिक (ES5 +) तरीका है