Как вы проверяете элемент для существования без использования метода 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. Несмотря на то, что элемент удален из dom, переменная сохраняет этот элемент так, как он был объявлен первым. Другими словами, это не живая ссылка на сам элемент, а скорее на реплику. В результате проверка значения переменной (элемента) на существование даст неожиданный результат.
Функция isNull
- это моя попытка проверить существование элементов из переменной, и она работает, но я хотел бы знать, есть ли более простой способ добиться того же результата.
PS: Меня также интересует, почему переменные JavaScript ведут себя так, если кто-нибудь знает о каких-то хороших статьях, связанных с предметом.