Bagaimana Anda menguji elemen untuk keberadaan tanpa menggunakan getElementById
metode ini?
Saya telah menyiapkan demo langsung untuk referensi. Saya juga akan mencetak kode di sini juga:
<!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>
Pada dasarnya kode di atas menunjukkan elemen yang disimpan ke dalam variabel dan kemudian dihapus dari DOM. Meskipun elemen telah dihapus dari DOM, variabel tetap mempertahankan elemen seperti ketika pertama kali dinyatakan. Dengan kata lain, ini bukan referensi langsung ke elemen itu sendiri, melainkan replika. Akibatnya, memeriksa nilai variabel (elemen) untuk keberadaan akan memberikan hasil yang tidak terduga.
The isNull
Fungsi adalah upaya saya untuk memeriksa eksistensi unsur-unsur dari variabel, dan bekerja, tapi saya ingin tahu apakah ada cara yang lebih mudah untuk mencapai hasil yang sama.
PS: Saya juga tertarik pada mengapa variabel JavaScript berperilaku seperti ini jika ada yang tahu beberapa artikel bagus yang berhubungan dengan subjek.