我尝试使用javascript遍历页面的DOM,并对每个标记执行简单警报,以显示tagName属性。它似乎没有起作用。
这是jsfiddle(和beow)中的代码和HTML https://jsfiddle.net/fluffymuffins/fw208ozk/
我没有看到任何提醒。怎么了?
HTML
<body>
test text
<p>
some paragraph
</p>
<img src="http://example.com/image.jpg">
</body>
JS
var results = [];
walkDOM(document.body, function(node) {
alert(node.tagName);
});
var walkDOM = function (node,func) {
func(node); //What does this do?
node = node.firstChild;
while(node) {
walkDOM(node,func);
node = node.nextSibling;
}
};
答案 0 :(得分:2)
所以,你正在调用一个尚不存在的方法:
在方法声明后轻松调用:
var results = [];
//declaration before
var walkDOM = function (node,func) {
func(node); //What does this do?
node = node.firstChild;
while(node) {
walkDOM(node,func);
node = node.nextSibling;
}
};
//invoke method after
walkDOM(document.body, function(node) {
alert(node.tagName);
});
您更新的小提琴:https://jsfiddle.net/diegopolido/fw208ozk/3/
func(node);
行表示你正在调用args中的函数,也许这个例子会澄清你的想法:
var walkDOM = function (node,func) {
func(node); //this will invoke the functionToInvoke from arg
node = node.firstChild;
while(node) {
walkDOM(node,func);
node = node.nextSibling;
}
};
var functionToInvoke = function(node) {
alert(node.tagName);
};
walkDOM(document.body, functionToInvoke);