怎么判断某元素中是否含有另外一个元素?谢谢。javascript
我在用document.body.removeChild(document.getElmentById("myId1"));可能会因document.body没有myId...
我在用document.body.removeChild(document.getElmentById("myId1"));
可能会因document.body没有myId1而报错。想写个判断函数。
我参考百度库:
baidu.dom.g = function (id) {
if ('string' == typeof id || id instanceof String) {
return document.getElementById(id);
} else if (id && id.nodeName && (id.nodeType == 1 ||
id.nodeType == 9)) {//id.nodeType == 9是什么意思?
return id;
}
return null;
};
/**
* 判断一个元素是否包含另一个元素
* @name baidu.dom.contains
* @function
* @grammar baidu.dom.contains(container, contained)
* @param {HTMLElement|string} container 包含元素或元素的id
* @param {HTMLElement|string} contained 被包含元素或元素的id
* @meta standard
* @see baidu.dom.intersect
*
* @returns {boolean} contained元素是否被包含于container元素的DOM节点
上
*/
baidu.dom.contains = function (container, contained) {
var g = baidu.dom._g;
container = g(container);
contained = g(contained);
//fixme: 无法处理文本节点的情况(IE)
return container.contains
? container != contained && container.contains(contained)
: !!(container.compareDocumentPosition(contained) & 16);//
不懂这条代码。
}; 展开
可能会因document.body没有myId1而报错。想写个判断函数。
我参考百度库:
baidu.dom.g = function (id) {
if ('string' == typeof id || id instanceof String) {
return document.getElementById(id);
} else if (id && id.nodeName && (id.nodeType == 1 ||
id.nodeType == 9)) {//id.nodeType == 9是什么意思?
return id;
}
return null;
};
/**
* 判断一个元素是否包含另一个元素
* @name baidu.dom.contains
* @function
* @grammar baidu.dom.contains(container, contained)
* @param {HTMLElement|string} container 包含元素或元素的id
* @param {HTMLElement|string} contained 被包含元素或元素的id
* @meta standard
* @see baidu.dom.intersect
*
* @returns {boolean} contained元素是否被包含于container元素的DOM节点
上
*/
baidu.dom.contains = function (container, contained) {
var g = baidu.dom._g;
container = g(container);
contained = g(contained);
//fixme: 无法处理文本节点的情况(IE)
return container.contains
? container != contained && container.contains(contained)
: !!(container.compareDocumentPosition(contained) & 16);//
不懂这条代码。
}; 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询