Come testare l'esistenza di un elemento senza l'uso del getElementById
metodo?
Ho creato una demo live per riferimento. Stamperò anche qui il codice:
<!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>
Fondamentalmente il codice sopra mostra un elemento che viene archiviato in una variabile e quindi rimosso dal DOM. Anche se l'elemento è stato rimosso dal DOM, la variabile mantiene l'elemento com'era quando è stato dichiarato per la prima volta. In altre parole, non è un riferimento attivo all'elemento stesso, ma piuttosto una replica. Di conseguenza, la verifica dell'esistenza del valore della variabile (l'elemento) fornirà un risultato imprevisto.
La isNull
funzione è il mio tentativo di verificare l'esistenza di elementi da una variabile e funziona, ma vorrei sapere se esiste un modo più semplice per ottenere lo stesso risultato.
PS: Sono anche interessato al motivo per cui le variabili JavaScript si comportano in questo modo se qualcuno conosce alcuni buoni articoli relativi all'argomento.