getElementById
Metodu kullanmadan bir elementin varlığını nasıl test edersiniz ?
Ben kurdunuz canlı demo başvuru için. Ayrıca kodu da burada yazdıracağım:
<!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>
Temel olarak yukarıdaki kod, bir değişkende saklanan ve daha sonra DOM'dan kaldırılan bir öğeyi gösterir. Öğe DOM'dan kaldırılmış olsa da, değişken öğeyi ilk bildirildiği gibi korur. Başka bir deyişle, öğenin kendisine canlı bir referans değil, bir kopyadır. Sonuç olarak, değişkenin değerinin (öğe) varlığını kontrol etmek beklenmedik bir sonuç sağlayacaktır.
isNull
İşlevi, bir değişkene bir element varlığını denetlemek için benim girişimi olduğunu ve çalışıyor, ama aynı sonucu başarmak için daha kolay bir yol olup olmadığını bilmek istiyorum.
Not: Konuyla ilgili iyi makaleler bilen biri varsa, JavaScript değişkenlerinin neden böyle davrandığıyla da ilgileniyorum.