计算DOM元素上的Div
counting Div on a DOM element
谁能帮我理解为什么下面这个不工作?如果一个元素有超过5个div,我希望得到true。
var hasMorethanFiveDiv = function(domElement, divCounter) {
// div counter variable(divcounter)
divCounter = divCounter || 0;
// if the current node has div
if(domElement.tagName === "DIV"){
divCounter++;
}
//iterate over children nodes
for(var i=0; i<domElement.children.length; i++){
// invoke hasMorethanFiveDiv on a child element.
hasMorethanFiveDiv(domElement.children[i], divCounter);
}
//return true if divCounter is bigger than 5
return divCounter >= 5;
};
是这一行:
hasMorethanFiveDiv(domElement.children[i], divCounter);
divCounter不是通过引用传递,而是通过值传递。这意味着如果在函数中修改了divCounter,它不会返回更新。
// Variable are sent by value
var value = 1;
var addValue = function(arg) {
arg++; // arg value is now 2, but only for the scope of this function
}
addValue(value);
alert(value); // alert 1 NOT 2...
// Objects are sent by reference
var obj = {
value: 1
}
var addValue2 = function(arg) {
arg.value++;
}
addValue2(obj);
alert(obj.value); // alert 2
工作示例:
var hasMorethanFiveDiv = function(domElement) {
//return true if divCounter is bigger than 5
var objCounter = {counter: 0};
divCounter(domElement, objCounter);
return objCounter.counter >= 5;
};
var divCounter = function(domElement, objCounter) {
// div counter variable(divcounter)
// if the current node has div
if(domElement.tagName === "DIV"){
objCounter.counter++;
}
//iterate over children nodes
for(var i=0; i<domElement.children.length; i++){
// invoke hasMorethanFiveDiv on a child element.
divCounter(domElement.children[i], objCounter);
}
}
alert(hasMorethanFiveDiv(document.getElementById("main1")));
alert(hasMorethanFiveDiv(document.getElementById("main2")))
<div id="main1">
<div></div>
<div></div>
<div><div></div><div></div></div>
<div></div>
</div>
<div id="main2">
<div></div>
<div></div>
</div>
相关文章:
- 循环对象时更新页面上的DIV元素
- 单击javascript按钮显示/隐藏Div元素
- Javascript 在提交时禁用 Div 元素
- 在 AJAX 调用中发送 DIV 元素的 ID
- 使用JavaScript函数添加多个DIV元素
- 如果在Div元素外部单击,请关闭该元素
- 如何使用CSS3/JavaScript缩放DIV元素及其子元素以适应父元素
- 将DIV元素绑定到溢出滚动条
- 如何切换DIV元素的可见性
- 使用jQuery/JS向上/向下切换DIV元素
- Div元素并没有引导点击以启用拖动功能
- 按百分比定位 Div 元素
- Javascript在秒消失时显示DIV元素,并在此之后隐藏栏的选项
- 切换复选框 - 单击父 DIV 元素
- 图像/DIV 元素切换全屏
- 滚动 DIV 元素的特定滚动条
- 如何使用 id 删除 JavaScript 中的 Div 元素
- 鼠标滚轮滚动 DIV 元素
- 从单个 Div 元素中删除单击事件
- 如何使用 JavaScript 动态设置 DIV 元素的左侧和顶部 CSS 位置