按住 Ctrl 键单击,将一个 li 元素复制到另一个列表

Onclick with Ctrl hold duplicate one li element to another list

所以基本上我需要做的是,当我单击一个 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;

关于如何使用尽可能少的代码来完成它有什么建议吗?我的意思是我是否需要为此创建另一个事件,我迷路了,感谢您的帮助!

按照你说的我的理解。如果按下 ctrl 键并单击 li 元素。基本上没有这种方法可以检测 ctrl 键是否被按下。但是下面的这个技巧将 return 在 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
    }
}