আমি ডিওমের একটি উপাদান প্রতিস্থাপন করতে চাই।
উদাহরণস্বরূপ, এখানে এমন একটি <a>
উপাদান রয়েছে যা আমি <span>
তার পরিবর্তে প্রতিস্থাপন করতে চাই ।
আমি কিভাবে গিয়ে তা করব?
আমি ডিওমের একটি উপাদান প্রতিস্থাপন করতে চাই।
উদাহরণস্বরূপ, এখানে এমন একটি <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>
A.replaceWith(span)
- কোন পিতামাতার প্রয়োজন নেইজেনেরিক ফর্ম:
target.replaceWith(element);
আগের পদ্ধতির তুলনায় ওয়ে ভাল / ক্লিনার।
আপনার ব্যবহারের ক্ষেত্রে:
A.replaceWith(span);
সমর্থিত ব্রাউজারগুলি - 94% এপ্রিল 2020
এই প্রশ্নটি অনেক পুরানো, তবে আমি নিজেকে একটি মাইক্রোসফ্ট শংসাপত্রের জন্য পড়াশোনা করতে দেখেছি এবং স্টাডি বইতে এটি ব্যবহার করার পরামর্শ দেওয়া হয়েছিল:
oldElement.replaceNode(newElement)
আমি এটি সন্ধান করেছি এবং এটি কেবল আইই সমর্থিত বলে মনে হচ্ছে। ডোহ ..
আমি ভেবেছিলাম আমি এটি এখানে একটি মজার দিকের নোট হিসাবে যুক্ত করব;)
আমি একই রকম সমস্যা পেয়েছি এবং এই থ্রেডটি পেয়েছি। প্রতিস্থাপনটি আমার পক্ষে কার্যকর হয়নি এবং পিতা-মাতার কাছে যাওয়া আমার পরিস্থিতির পক্ষে কঠিন ছিল। ইনার এইচটিএমএল বাচ্চাদের প্রতিস্থাপন করেছিল, যা আমি চেয়েছিলাম তা নয়। বাইরের এইচটিএমএল ব্যবহার করে কাজটি সম্পন্ন হয়েছে। আশাকরি এটি কাউকে সাহায্য করবে!
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 +) উপায়