使用Ctrl进行Onclick会将一个li元素复制到另一个列表中

时间:2016-11-23 10:50:11

标签: javascript html list dom space-efficiency

所以基本上我需要做的是,当我点击一个UL列表项目时,按住Ctrl键需要复制并且该副本需要转到另一个列表,到目前为止我只能到达我点击它进入另一个没有Ctrl的列表的东西,这对于这个作业也是强制性的。 我将上传脚本到目前为止:

var usersA = document.getElementById("users-a");
var usersB = document.getElementById("users-b");

var onclickA;
var onclickB = function() {
        usersA.appendChild(this);
        this.onclick = onclickA;
        return false;
    };
onclickA = function() {
        usersB.appendChild(this);
        this.onclick = onclickB;
        return false;
    };

for (var i=0; i < usersA.getElementsByTagName("li").length; i++)
    usersA.getElementsByTagName("li")[i].onclick = onclickA;
for (var i=0; i < usersB.getElementsByTagName("li").length; i++)      
    usersB.getElementsByTagName("li")[i].onclick = onclickB;

有关如何使用尽可能少的代码执行此操作的任何建议?我的意思是我需要为此创建另一个事件,我迷路了,谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

就像我说的那样。如果已按下ctrl键并单击li元素。基本上没有这种方法可以检测ctrl键是否被按下。但是下面这个技巧将在keydown上返回true,在keyup上返回false。因此,当按下ctrl键时,它始终为真,直到它被释放

var keys = {};
onkeydown = onkeyup = function(e){
    e = e || event;
    keys[e.keyCode] = e.type == 'keydown';
    if(keys[17] == true){
        //the ctrl key is held down, so run your code here
    }
}