Saya mencoba untuk memindahkan elemen div saya dengan membuat tubuh merasakan tombol tombol apa yang saya tekan, menemukan simbol kunci yang tepat w, a, x, d, dan kemudian mengurangi atau menambahkan atribut css dari elemen html.

Namun itu tidak berfungsi dan setiap kali saya konsol mencatat elemen atau atributnya, tidak ada yang muncul. Penggerak tidak akan bergerak.

var mover; 


function moveDivBlock(e){
    if ((e.keyCode == 69) ||(e.keyCode == 68)||(e.keyCode == 67)){//go right
        moveBlock(mover,10,0);}
    if ((e.keyCode == 81) ||(e.keyCode == 65)||(e.keyCode == 90)){//go left
        moveBlock(mover,-10,0);}
    if ((e.keyCode == 81) ||(e.keyCode == 87)||(e.keyCode == 69)){//go up
        moveBlock(mover,0,10);}
    if ((e.keyCode == 90) ||(e.keyCode == 88)||(e.keyCode == 67)){//go down
        moveBlock(mover,0,-10);}
}

function handleKeyDown(e) {
    moveDivBlock(e);
}


function moveBlock(elem, rightShift, upShift){
    var curLeft = parseInt(elem.style.left); 
    var curTop = parseInt(elem.style.top); 
    elem.style.left = (curLeft + rightShift) + "px"; 
    elem.style.top = (curTop - upShift) + "px"; 
}


window.onload=function(){
    mover=document.getElementById("mover");
}
    #mover{
        position:absolute;
        top:290px;
        left:130px;
    
        background-color:green;
        width:50px; 
        height:50px; 
        border:2px solid black;
    }
<body onkeydown="handleKeyDown(event);">
        <div id="mover"></div>
</body>
2
Strollas 27 Mei 2021, 12:26

1 menjawab

Jawaban Terbaik

Alasan ini tidak berfungsi, elem.style.top hanya mengembalikan gaya sebaris, bukan gaya dari file css. Untuk mendapatkan gaya dari file css Anda perlu menggunakan getComputedStyle(elem). Silakan coba ini


function moveBlock(elem, rightShift, upShift){
    var curLeft = parseInt(getComputedStyle(elem).left); 
    var curTop = parseInt(getComputedStyle(elem).top); 
    elem.style.left = (curLeft + rightShift) + "px"; 
    elem.style.top = (curTop - upShift) + "px"; 
}
4
Rajdeep Debnath 27 Mei 2021, 09:35