getElementById
পদ্ধতিটি ব্যবহার না করে আপনি অস্তিত্বের জন্য কোনও উপাদানকে কীভাবে পরীক্ষা করবেন ?
আমি রেফারেন্সের জন্য একটি লাইভ ডেমো সেট আপ করেছি । আমি এখানে কোডও প্রিন্ট করব:
<!DOCTYPE html>
<html>
<head>
<script>
var getRandomID = function (size) {
var str = "",
i = 0,
chars = "0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ";
while (i < size) {
str += chars.substr(Math.floor(Math.random() * 62), 1);
i++;
}
return str;
},
isNull = function (element) {
var randomID = getRandomID(12),
savedID = (element.id)? element.id : null;
element.id = randomID;
var foundElm = document.getElementById(randomID);
element.removeAttribute('id');
if (savedID !== null) {
element.id = savedID;
}
return (foundElm) ? false : true;
};
window.onload = function () {
var image = document.getElementById("demo");
console.log('undefined', (typeof image === 'undefined') ? true : false); // false
console.log('null', (image === null) ? true : false); // false
console.log('find-by-id', isNull(image)); // false
image.parentNode.removeChild(image);
console.log('undefined', (typeof image === 'undefined') ? true : false); // false ~ should be true?
console.log('null', (image === null) ? true : false); // false ~ should be true?
console.log('find-by-id', isNull(image)); // true ~ correct but there must be a better way than this?
};
</script>
</head>
<body>
<div id="demo"></div>
</body>
</html>
মূলত উপরের কোডটি দেখায় যে কোনও উপাদান একটি ভেরিয়েবলের মধ্যে সংরক্ষণ করা হয় এবং তারপরে DOM থেকে সরানো হয়। তবুও উপাদানটি ডিওএম থেকে অপসারণ করা হলেও, ভেরিয়েবল উপাদানটিকে প্রথম হিসাবে ঘোষণার সময়টিকে ধরে রাখে। অন্য কথায়, এটি উপাদানটির নিজস্ব কোনও জীবন্ত রেফারেন্স নয়, বরং একটি প্রতিরূপ। ফলস্বরূপ, অস্তিত্বের জন্য ভেরিয়েবলের মান (উপাদান) পরীক্ষা করা একটি অপ্রত্যাশিত ফলাফল সরবরাহ করবে।
isNull
ফাংশন একটি পরিবর্তনশীল থেকে একটি উপাদান অস্তিত্বের চেক করার জন্য আমার প্রচেষ্টা, এবং এটি কাজ করে, কিন্তু আমি যদি সেখানে একটি সহজ উপায় একই ফলাফল সম্পন্ন করার জন্য জানি চাই।
PS: আমি জাভাস্ক্রিপ্টের ভেরিয়েবলগুলি কেন এমন আচরণ করে তা সম্পর্কে আগ্রহী যদি কেউ বিষয় সম্পর্কিত কিছু ভাল নিবন্ধ সম্পর্কে জানেন।