function talksAbout(node, string) {
if (node.nodeType == document.ELEMENT_NODE) {
for (var i = 0; i < node.childNodes.length; i++) {
if (talksAbout(node.childNodes[i], string))
return true;
}
return false;
} else if (node.nodeType == document.TEXT_NODE) {
return node.nodeValue.indexOf(string) > -1;
}
}
console.log(talksAbout(document.body, "book"));
这个代码我在Eloquent Javascript中找到了第4页。如果有人逐行解释它会很有帮助。
答案 0 :(得分:1)
DOM由不同类型的节点组成。 Body,Div等是输入时的元素节点:text,text区域是文本节点,依此类推。函数negotiationAbout递归循环遍历给定'body'元素节点的childNodes,直到找到值为“book”的文本节点。
答案 1 :(得分:0)
此代码在您的页面中搜索单词“book”,如果找到则返回true。我认为代码很容易理解和阅读。但是你需要知道这一点才能理解(在页面底部)
答案 2 :(得分:0)
stackoverflow
基本上,这个函数看看是否有&#34; book&#34;存在于页面上的TEXT中 - 因此function talksAbout(node, string) { // declares a function called talksAbout, which takes two parameters: node and string
if (node.nodeType == document.ELEMENT_NODE) { // checks if the passed in node is an "ELEMENT_NODE" - <body><div><span>etc
for (var i = 0; i < node.childNodes.length; i++) { // loops through all the child nodes of the passed in node
if (talksAbout(node.childNodes[i], string)) // recursively calls the function on each node
return true; // returns true if the function returns true
} // ends the for loop block
return false; // returns false
} else if (node.nodeType == document.TEXT_NODE) { // if the node is a TEXT node
return node.nodeValue.indexOf(string) > -1; // returns true if the passed in string is somewhere in this text node
} // ends ths else if block
} // ends the function block
console.log(talksAbout(document.body, "book")); // execute the function, passing in the body element, and a string "book", logging the result to the console
不会被视为匹配