0

わかりました、タイトルは複雑に聞こえますが、私がやりたいことのアイデアは実際には非常に単純です。

ループによって自動入力されたリストボックスがあります。このようなもの..

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

スクロール可能ですが、多くの場合、時には数百のアイテムが含まれます。

各チェックボックスを通過するときにチェックを外す別のループがあります。1秒あたり約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を含むメインに一意の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 に答える