0

好的,所以标题听起来很复杂,但我想要做的想法实际上很简单。

我有一个由循环自动填充的列表框。像这样的东西。。

TICKBOX | VALUE |
TICKBOX | VALUE |
TICKBOX | VALUE |

它是可滚动的,但通常包含许多项目,有时甚至是数百个。

我有另一个循环在每个复选框通过它们时取消选中它们,大约每秒 1 个左右。

就目前而言,复选框在处理每个复选框时都未选中,但我想自动滚动该框,以便底部项目始终是下一个要处理的项目,或者下一个带有仍然勾选框的项目。

有人有想法么?我已经尝试过scrollTop,但我对 javascript/CSS 不是很好。

编辑:我尝试了一些东西,但甚至没有接近。我将添加一小段代码,但它来自 20'000 行脚本,因此可能没有多大意义。随意摇晃它和东西。

    m += '<DIV style="max-height:220px; overflow-y:auto;">';
    m += '<TABLE align=center cellpadding=0 cellspacing=0></td><TD width=15><input type=checkbox id=pbsrcScout_All></td><TD>COLUMN 2</td></tr>';
    var coordlist = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"] // just made this up so it makes some small sense.
    for (i = 0; i < coordlist.length; i++) {
    var addOn = coordlist[i];
    m += '<TABLE align=center cellpadding=0 cellspacing=0>'
    m += '<TR><TD><INPUT type=checkbox id="pbsrcScoutCheck_' + coordlist[i] + '"></td><TD>' + coordlist[i] + '</td><TD><DIV id=statusMessage_' + addOn + '></div></td></tr>';
    }
    m += '</table>'
    m += '</table></div>';
4

1 回答 1

0

希望我能正确理解你的问题。如果您对使用 jQuery 感到满意,您可以尝试以下方法。为此,您需要为包含 div 的 main 提供一个唯一 ID。我在这个例子中使用了“父母”。

你说你有一个循环每 1 秒检查一次每个复选框,所以我使用 setInterval 来模拟循环。

工作示例

var checkboxes = $('[id^=pbsrcScoutCheck_]'), // find all checkboxes
    checkboxIndex = 0, // so we know what box needs to be unchecked next
    parent = $("#parent"), // the main parent div container. 
    interval;

// emulate you're loop that checks each box
interval = setInterval(function() {
    var checkbox = $(checkboxes[checkboxIndex]).attr('checked', false);
    if (checkbox.position().top + (checkbox.height() * 3) > parent.height()) {
        parent.stop(true, true).animate({
            scrollTop: "+=" + (checkbox.height() * 3)
        }, 500);
    }

    checkboxIndex++;
    if (checkboxIndex > checkboxes.length) {
        clearInterval(interval);
    }
}, 1000);
于 2013-01-01T15:51:26.673 回答