这函数好象不会无限 递归吧,没整明白
function getAddTop(td_rc: { r: number, c: number, maxc: number, maxr: number }, sRow: number) {
if (sRow < 0) return
let td
for (let x = 1; x < tb.rows[sRow].cells.length; x++) {
td = tb.rows[sRow].cells[x]
if (!td) continue
const rc = JSON.parse(td.getAttribute('td_rc') as string)
if (rc.maxr < td_rc.r && rc.c == td_rc.c) {
console.log(`第${sRow}(行)次,向上增加td:${sRow}行,${x}列`, td)
return td
}
}
if (!td) { sRow = sRow - 1; getAddTop(td_rc, sRow) }
}
应该是不会无限递归的,你是要返回td吗, 应该是逐层的返回
function getAddTop(td_rc: { r: number, c: number, maxc: number, maxr: number }, sRow: number) {
if (sRow < 0) return
let td
for (let x = 1; x < tb.rows[sRow].cells.length; x++) {
td = tb.rows[sRow].cells[x]
if (!td) continue
const rc = JSON.parse(td.getAttribute('td_rc') as string)
if (rc.maxr < td_rc.r && rc.c == td_rc.c) {
console.log(`第${sRow}(行)次,向上增加td:${sRow}行,${x}列`, td)
return td
}
}
return getAddTop(td_rc, sRow-1);
}
或者改成循环,你这个不需要递归
function getAddTop(td_rc: { r: number, c: number, maxc: number, maxr: number }, sRow: number) {
let td
for (let y = sRow; y >=0 ; y--) {
for (let x = 1; x < tb.rows[y].cells.length; x++) {
td = tb.rows[y].cells[x]
if (!td) continue
const rc = JSON.parse(td.getAttribute('td_rc') as string)
if (rc.maxr < td_rc.r && rc.c == td_rc.c) {
console.log(`第${y}(行)次,向上增加td:${y}行,${x}列`, td)
return td
}
}
}
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!