我有这个简单的功能:
var x = document.createTextNode("ERROR");
document.body.appendChild(x);
那么我需要创建一个IF来验证此消息是否存在 [如果此消息已创建]。这就是问题所在,我不知道该怎么做。
GetElementByID似乎不适用于动态创建的元素。
有什么帮助吗?谢谢。
我有这个简单的功能:
var x = document.createTextNode("ERROR");
document.body.appendChild(x);
那么我需要创建一个IF来验证此消息是否存在 [如果此消息已创建]。这就是问题所在,我不知道该怎么做。
GetElementByID似乎不适用于动态创建的元素。
有什么帮助吗?谢谢。
你可以document.contains
用来检查一个元素是否在 DOM 中
只是一个简单的例子来说明它是如何工作的
document.contains($('<div>')[0]); // FALSE
和
document.contains($('<div>').appendTo('body')[0]); // TRUE
jQuery 仅用于元素创建的简写
这也适用于文本节点,您可以在任何节点上使用 contains。
document.body.contains(Node); // Example
浏览器支持有点非常好
文档:https ://developer.mozilla.org/en-US/docs/Web/API/Node.contains
问题具体:
var x = document.createTextNode("ERROR");
document.body.appendChild(x);
document.contains(x); // Should be TRUE
您正在创建一个文本节点,而不是一个元素。您需要创建一个元素并给它一个 id 才能使用getElementById
。
我不知道搜索文本节点的任何合理方法,尽管您始终可以检查附加它的元素的文本节点并查看它是否存在。
var message = "ERROR";
var t = document.createTextNode(message);
var node = document.getElementById('content').appendChild(t);
if (document.getElementById('content').innerHTML !== message) {
console.log('element not added');
} else {
console.log('element added');
}
这是一个小提琴:
我相信这会奏效:
var x = document.createTextNode("ERROR");
var element = document.body.appendChild(x); //returns text node
if(!element){
//element was not added
}
虽然如果我是你,我可能会创建一个带有 id 或名为 error 的类的 span 元素。这样您就可以对其应用任何 CSS 样式。
试试这个:
var x = document.createTextNode("ERROR");
document.body.appendChild(x);
if (document.body.innerText.indexOf('ERROR')>=0){
alert('"ERROR" found');
}
indexOf 不适用于所有浏览器。
正如@slowpython 所说,我宁愿创建一个带有 ID 或 NAME 的 DOM 元素。