Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 计算DOM元素上的Div_Javascript - Fatal编程技术网

Javascript 计算DOM元素上的Div

Javascript 计算DOM元素上的Div,javascript,Javascript,有人能帮我理解为什么下面的方法不起作用吗?如果一个元素中有超过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"){

有人能帮我理解为什么下面的方法不起作用吗?如果一个元素中有超过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;
};
var hasMorethan FivedIV=函数(doElement,divCounter){
//div计数器变量(divcounter)
divCounter=divCounter | | 0;
//如果当前节点具有div
如果(doElement.tagName==“DIV”){
divCounter++;
}
//迭代子节点
对于(var i=0;i=5;
};
就是这一行:

hasMorethanFiveDiv(domElement.children[i], divCounter); 
divCounter不是通过引用传递的,而是通过值传递的。这意味着,如果在函数中修改了divCounter,则不会返回更新

//变量按值发送
var值=1;
var addValue=函数(arg){
arg++;//arg值现在为2,但仅适用于此函数的作用域
}
附加值(value);
警报(值);//警报1不是2。。。
//对象通过引用发送
var obj={
价值:1
}
var addValue2=函数(arg){
参数值++;
}
addValue2(obj);

alert(obj.value);//alert 2
您没有捕获for循环中的返回值这将适用于嵌套div,更改如下:@ignacykasperowicz.good job.@GinacyKasperowicz.谢谢帮助。但是对于非嵌套div呢?像这样,它似乎不适用于此。谢谢您,aprovent。这很有帮助。