我正在尝试检查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');
}
为什么警告“不”而不是“是”?
答案 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;
答案 1 :(得分:0)
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()
会将其从当前位置移至新位置。
<强>样本强>
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;