এই এইচটিএমএল স্ট্রিংটি কীভাবে যুক্ত করা যায়
var str = '<p>Just some <span>text</span> here</p>';
ডিওএম-তে আইডিটি 'test'
যা ডম-এ রয়েছে?
(বিটিডব্লিউ div.innerHTML += str;
গ্রহণযোগ্য নয়।)
এই এইচটিএমএল স্ট্রিংটি কীভাবে যুক্ত করা যায়
var str = '<p>Just some <span>text</span> here</p>';
ডিওএম-তে আইডিটি 'test'
যা ডম-এ রয়েছে?
(বিটিডব্লিউ div.innerHTML += str;
গ্রহণযোগ্য নয়।)
উত্তর:
insertAdjacentHTML
এটি উপলভ্য থাকলে ব্যবহার করুন , অন্যথায় কিছু প্রকারের ফ্যালব্যাক ব্যবহার করুন। insertAdjacentH HTML সমস্ত বর্তমান ব্রাউজারে সমর্থিত ।
div.insertAdjacentHTML( 'beforeend', str );
লাইভ ডেমো: http://jsfiddle.net/euQ5n/
insertAdjacentHTML
দ্রুত করার সংযোজন চেয়ে innerHTML
, কারণ insertAdjacentHTML
ধারাবাহিকভাবে না এবং উপাদান বিদ্যমান শিশু reparse।
insertAdjacentHTML
পরিবর্তিত ফর্ম উপাদানগুলির মানগুলি বজায় রাখে, যেখানে innerHTML
উপাদানটিকে পুনর্নির্মাণের জন্য সংযোজন এবং সমস্ত ফর্মের প্রসঙ্গ হারাবে oses
এটা কি গ্রহণযোগ্য?
var child = document.createElement('div');
child.innerHTML = str;
child = child.firstChild;
document.getElementById('test').appendChild(child);
jsFizz ।
তবে , নীলের উত্তরই এর চেয়ে ভাল সমাধান।
innerHTML
?
insertAdjacentHTML
।
AppendChild
(ই) ক্রোম এবং সাফারি সম্পর্কিত অন্যান্য সমাধানের তুলনায় 2x এরও বেশি দ্রুত, insertAdjacentHTML
(ফ) ফায়ার ফক্সে দ্রুততম। innerHTML=
(বি) (সঙ্গে গুলিয়ে ফেলবেন না +=
(একটি)) সকল ব্রাউজারে দ্বিতীয় ফাস্ট সমাধান এবং এটি E এবং এফ চেয়ে অনেক বেশী সুবিধাজনক
পরিবেশ স্থাপন করুন (2019.07.10) ক্রোম 75.0.3770 (64-বিট), সাফারি 11.1.0 (13604.5.6), ফায়ারফক্স 67.0.0 (64-বিট) এ ম্যাকওস হাই সিয়েরা 10.13.4
আপনি এখানে আপনার মেশিনে পরীক্ষা পুনরায় খেলতে পারেন
innerHTML
কোনও মধ্যস্থতাকারী উপাদানটি ব্যবহার করা এবং তারপরে আপনার শিশু নোডগুলিকে আপনি যেখানে চান সেদিকেই যেতে চান appendChild
।
var target = document.getElementById('test');
var str = '<p>Just some <span>text</span> here</p>';
var temp = document.createElement('div');
temp.innerHTML = str;
while (temp.firstChild) {
target.appendChild(temp.firstChild);
}
এটি কোনও ইভেন্ট হ্যান্ডলারগুলিকে মুছে ফেলা এড়িয়ে যায় div#test
তবে তবুও আপনাকে HTML এর স্ট্রিং যুক্ত করতে দেয়।
সঠিক উপায় ব্যবহার করা হয় insertAdjacentHTML
। ফায়ারফক্সে 8 এরও আগে, আপনি Range.createContextualFragment
যদি str
কোনও script
ট্যাগ না রাখেন তবে আপনি ফিরে যেতে পারেন ।
যদি আপনার ট্যাগগুলি str
থাকে তবে খণ্ডটি সন্নিবেশ করার আগে আপনাকে ফিরে আসা খণ্ড থেকে উপাদানগুলি script
সরিয়ে ফেলতে হবে । অন্যথায় স্ক্রিপ্টগুলি চলবে। ( স্ক্রিপ্টগুলি অনিবার্য চিহ্নিত করে))script
createContextualFragment
insertAdjacentHTML
createContextualFragment
। আমি কোনও এইচটিএমএল তৈরির স্ক্রিপ্টগুলি চালানোর সাথে অন্তর্ভুক্ত করার উপায়টি অনুসন্ধান করছিলাম তবেই যদি ব্যবহারকারী কোনও কুকি সেট করতে রাজি হন।
দ্রুত হ্যাক :
<script>
document.children[0].innerHTML="<h1>QUICK_HACK</h1>";
</script>
কেসগুলি ব্যবহার করুন :
1: html ফাইল হিসাবে সংরক্ষণ করুন এবং ক্রোম বা ফায়ারফক্স বা প্রান্তে চালান। (IE অভ্যাস কাজ করবে না)
2: http://js.do এ ব্যবহার করুন
পদক্ষেপে : http://js.do/HeavyMetalCookies/quick_hack
মন্তব্য সহ ভাঙ্গা:
<script>
//: The message "QUICK_HACK"
//: wrapped in a header #1 tag.
var text = "<h1>QUICK_HACK</h1>";
//: It's a quick hack, so I don't
//: care where it goes on the document,
//: just as long as I can see it.
//: Since I am doing this quick hack in
//: an empty file or scratchpad,
//: it should be visible.
var child = document.children[0];
//: Set the html content of your child
//: to the message you want to see on screen.
child.innerHTML = text;
</script>
আমি পোস্ট করার কারণ:
জেএস.ডোর দুটি অবশ্যই আবশ্যক রয়েছে:
তবে কনসোল.লগ বার্তা প্রদর্শন করে না। একটি দ্রুত সমাধান খুঁজছেন এখানে এসেছেন। আমি কেবল কয়েক লাইন স্ক্র্যাচপ্যাড কোডের ফলাফল দেখতে চাই, অন্যান্য সমাধানগুলি খুব বেশি কাজ করে।
কেন তা গ্রহণযোগ্য নয়?
document.getElementById('test').innerHTML += str
এটি করার পাঠ্যপুস্তক হবে
#test
। এটি সাধারণত কাম্য নয়।
এটি সমাধান করতে পারে
document.getElementById("list-input-email").insertAdjacentHTML('beforeend', '<div class=""><input type="text" name="" value="" class="" /></div>');
ইনার এইচটিএমএল বিদ্যমান নোডগুলির জন্য ইভেন্টের মতো সমস্ত ডেটা সাফ করে
ফার্স্টচাইল্ড সহ শিশু সংযোজন শুধুমাত্র অন্তর্নিহিত এইচটিএমএলে প্রথম সন্তানের যোগ করে। উদাহরণস্বরূপ যদি আমাদের সংযোজন করতে হয়:
<p>text1</p><p>text2</p>
কেবল পাঠ্য 1 প্রদর্শিত হবে
এই সম্পর্কে কি:
অভ্যন্তরীণ এইচটিএমএলটিতে অ্যাড চাইল্ড দ্বারা বিশেষ ট্যাগ যুক্ত করুন এবং তারপরে আমরা তৈরি ট্যাগটি মুছে ফেলে বাইরের এইচটিএমএল সম্পাদনা করব। এটি কতটা স্মার্ট তা জানেন না তবে এটি আমার পক্ষে কাজ করে বা আপনি বাইরের এইচটিএমএলকে অভ্যন্তরীণ এইচটিএমএলে পরিবর্তন করতে পারেন যাতে এটি ফাংশন রিপ্লেসটি ব্যবহার না করে
function append(element, str)
{
var child = document.createElement('someshittyuniquetag');
child.innerHTML = str;
element.appendChild(child);
child.outerHTML = child.outerHTML.replace(/<\/?someshittyuniquetag>/, '');
// or Even child.outerHTML = child.innerHTML
}
<div id="testit">
This text is inside the div
<button onclick="append(document.getElementById('testit'), '<button>dadasasdas</button>')">To div</button>
<button onclick="append(this, 'some text')">to this</button>
</div>
সংক্ষিপ্ততম - 18 টি অক্ষর (বিভ্রান্ত নয় +=
(ওপি দ্বারা উল্লেখ) এখানে=
আরও বিশদ সহ )
test.innerHTML=str
innerHTML
উপাদানটিকে স্ট্রিংটি (সমস্ত শিশুদের প্রতিস্থাপনের) মধ্যেinsertAdjacentHTML
রাখে , যেখানে এটি উপাদানটির আগে (1), (2) উপাদান পরে, (3) প্রথম সন্তানের আগে উপাদানটির ভিতরে রাখে, বা (4) শেষ সন্তানের পরে উপাদান ভিতরে।