1 回答
TA贡献1830条经验 获得超9个赞
因为你用div.getElementsByTagName('table')[0]
这个取到的是一个DOM对象,由于DOM对象没有.length
属性,所以target.length
其实是未定义的。而undefined > 0
的值一直是false
,所以你会无限次地调用else
分支,所以也就会添加无数次的find(div)
绑定。所以浏览器提示find
调用次数超出最大限制。
正确的做法是让target
为div.getElementsByTagName("table")
,这才是一个数组,才有.length
的值。
Update
代码:
方案1:(判断取到所有table的数组长度,并取第一个操作)
function find(div) {
var target = div.getElementsByTagName("table");
if (target.length > 0) {
target[0].style.background = 'red';
} else {
setTimeout(function() {
find(div);
}, 1000)
}
};
方案2:(直接判断table,并直接操作取到的table)
function find(div) {
var target = div.getElementsByTagName("table")[0];
if (target) {
target.style.background = 'red';
} else {
setTimeout(function() {
find(div);
}, 1000)
}
};
添加回答
举报