javascript:通过点击,控制点击和转移点击实现选择,例如在Windows资源管理器中

时间:2010-02-28 20:59:47

标签: javascript

在Javascript中:

我需要通过点击,控制点击和移动点击html表格中的行来实现选择,例如在Windows资源管理器中,如果代码已经存在,我讨厌编写它。

有人能指出我正确的方向吗?

谢谢!

1 个答案:

答案 0 :(得分:4)

所需的脚本非常简单。这样的事情会起作用:

var keyDown = null;
var selectedRows;
var allRows;

function bindEvents() {
    allRows = document.getElementsByTagName("tr");
    document.onkeydown = function(e) {
        if (!e) e = window.event;
        if (e.ctrlKey) keyDown = "ctrl";
        if (e.shiftKey) keyDown = "shift";
    };

    document.onkeyup = function(e) {
        keyDown = null;
    };

    for (var i = 0, l = allRows.length; i < l; i++) {
        allRows[i].onclick = new Function("selectRow(" + i + ")");
    }
}

function selectRow(rowID) {
    if (!keyDown)
        selectedRows = [rowID];
    else {
        if (keyDown == "ctrl")
            selectedRows.push(rowID);
        else {
            if (selectedRows.length > 0) {
                var lastSelected = selectedRows[selectedRows.length - 1];
                for (var i = lastSelected + 1; i <= rowID; i++)
                    selectedRows.push(i);
            } else
                selectedRows.push(rowID);
        }
    }

    for (var i = 0, l = allRows.length; i < l; i++)
        allRows[i].style.backgroundColor = "";

    if (selectedRows.length > 0)
        for (var i = 0, l = selectedRows.length; i < l; i++)
            allRows[selectedRows[i]].style.backgroundColor = "red";

    keyDown = null;
}

添加body onload =“bindEvents()”,它将适用于页面中的所有表(如果您有多个表,则可能需要将脚本更改为仅使用您关注的表)。它不是最漂亮的代码,但它可以解决问题。