我的代码看起来有点像这样。
我想要实现的是如果被检查的div具有子div,则更改for循环编码。
var condition = divs.querySelectorAll('div');
for(i = 0; i < condition.length; i++){
if(condition[i].querySelectorAll('div').length > 0){
condition = condition[i].querySelectorAll('div');
i = 0;
}else{
// Last div reached.
break;
}
}
有没有人知道如何实现这种效果。 我是否必须使用其他类型的循环?
编辑:
由于我觉得错误的是什么代码错了,我现在发布一堆杂乱的代码:
var posX = e.clientX;
var posY = e.clientY;
function mouseDown(e){
var getChildDivs = this.querySelectorAll('div');
if(getChildDivs.length > 0){
var offsetDivLeft = 0;
var offsetDivTop = 0;
for(i = 0; i < getChildDivs.length; i++){
if(posX >= getChildDivs[i].offsetLeft && posX <= getChildDivs[i].offsetLeft + Math.floor(getChildDivs[i].style.width.slice(0, -2)) &&
posY >= getChildDivs[i].offsetTop && posY <= getChildDivs[i].offsetTop + Math.floor(getChildDivs[i].style.height.slice(0, -2))){
if(getChildDivs[i].querySelectorAll('div').length > 0){
offsetDivLeft = offsetDivLeft + getChildDivs[i].offsetLeft;
offsetDivTop = offsetDivTop + getChildDivs[i].offsetTop;
getChildDivs = getChildDivs[i].querySelectorAll('div');
curDiv = getChildDivs[i];
i = 0;
}else{
curDiv = getChildDivs[i];
break;
}
}
}
}
}
答案 0 :(得分:0)
我创造了一个小提琴,它循环遍历每个儿童元素和孩子的孩子:
var condition = divs.querySelectorAll('div');
for(i = 0; i < condition.length; i++){
if(condition[i].children.length > 0){
condition = condition[i].querySelectorAll('div');
alert(condition);
i = 0;
}else{
// Last div reached.
break;
}
}
我希望它有所帮助;)
答案 1 :(得分:0)
正确的解决方案是
function mouseDown(e){
curdiv = e.target;
}
事件的target
属性为您提供了被点击的实际div - 通常是最前面的div,通常也是嵌套最深的div。来自MDN:
对调度事件的对象的引用。