目前,我发现方法querySelectorAll
位于document,node
而不是元素,可在HTML elements找到。
我正在使用一个接受第一个参数的函数,一个节点,一个元素或一个选择器然后找到一个元素。我需要检查节点的类型,因为该函数应该可以传递document
。
function queryElement(elementOrSelector) {
if (!isNode(elementOrSelector)) {
elementOrSelector = document.querySelector(elementOrSelector);
}
// This next line is the line I worry about
var possibleElements = elementOrSelector.querySelector('[test]');
...
}
function isNode(o) {
return (
typeof Node === "object" ? o instanceof Node :
o && typeof o === "object" && typeof o.nodeType === "number" && typeof o.nodeName === "string"
);
}
这允许我传递以下内容:
queryElement(document);
// or
queryElement(document.querySelector('select'));
他们都会工作。但是现在,我只是在技术上检查它们是否属于node
类型,querySelectorAll
方法仅存在于document
和HTML Element
原型中。我相信Element
继承自Node
,这就是为什么大部分都在运作的原因。但如果我只检查node
的类型,我会遇到问题吗?是否还有一个特定的node
也不是Element
,而querySelectorAll
没有// For each row
for (int i = 0; i < descs.rows; ++i) {
// Perform L1 normalization
cv::normalize(descs.row(i), descs.row(i), 1.0, 0.0, cv::NORM_L1);
}
// Perform sqrt on the whole descriptor matrix
cv::sqrt(descs, descs);
?
答案 0 :(得分:1)
是否存在不属于
Element
的特定节点 有querySelectorAll
可用吗?
是。例如:
我认为检查某些节点是否为节点的唯一可靠方法是尝试将其用作节点,并查看是否会引发错误。
但是,检查对象是否具有querySelector
属性(可能它的值是函数)可能就足够了。