如何检查文档是否包含元素

时间:2018-04-05 18:27:19

标签: javascript dom contains

我正在尝试检查DOM是否包含ID =“htmlFileLink”的元素。

let element = document.createElement('a');
element.id = 'htmlFileLink';
document.body.insertAdjacentHTML( 'beforeend', element );

if( document.body.contains( document.getElementById('htmlFileLink') ) ) {
	alert ('yes');
}
else {
	alert ('no');
}

为什么警告“不”而不是“是”?

4 个答案:

答案 0 :(得分:0)

insertAdjacentHTML 的第二个参数必须是HTML。

实施例



document.body.insertAdjacentHTML('beforeend', '<a id="htmlFileLink">Ele</a>');

if (document.body.contains(document.getElementById('htmlFileLink'))) {
  console.log('yes');
} else {
  console.log('no');
}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

根据the specification

  

insertAdjacentHTML()将指定的文本解析为HTML或XML   将生成的节点插入到指定位置的DOM树中。

这意味着该函数总是希望第二个参数是HTML的有效字符串,而不是DOM元素

请查看以下代码段以确保:

document.body.insertAdjacentHTML('beforeend', '<a id="htmlFileLink"></a>');

if (document.body.contains(document.getElementById('htmlFileLink'))) {
  alert ('yes');
} else {
  alert ('no');
}

答案 2 :(得分:0)

而不是创建元素 尽量做到简单易行。

enter code here

<script>

if(document.getElementById('htmlFileLink')) {
    alert ('yes');
}
else {
    alert ('no');
}
</script>

答案 3 :(得分:0)

Node.appendChild()方法将节点添加到指定children节点的parent列表的末尾。如果给定的child是对document中现有节点的引用,则appendChild()会将其从当前位置移至新位置。

<强>样本

&#13;
&#13;
let element = document.createElement('a');
element.id = 'htmlFileLink';
element.innerText = 'Test';
document.body.appendChild(element);

if (document.body.contains(document.getElementById('htmlFileLink'))) {
  alert('yes');
} else {
  alert('no');
}
&#13;
&#13;
&#13;