javascript - 通过 JavaScript 使用变量更改边距

标签 javascript html css

我正在尝试更改 top margin 的值,当按下向上箭头键时代码对我来说似乎是正确的,但我不知道为什么它不会工作 !

JavaScript

var playerPosition = 0;

window.onkeyup = function(e) {
    var key = e.keyCode ? e.keyCode : e.which;

    if(key = 38) {
        playerPosition += 10;

    } else if(key = 40) {
        playerPosition -= 10;
    }

    document.getElementsByClassName('player').style.marginTop = playerPosition+".px";

 }

html/CSS

.mainDiv {
        display: block;
        position: absolute;
        margin: auto;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
        background-color: black;
        width: 600px;
        height: 400px;
    }
    .player {
        position: absolute;
        background-color: #FFF;
        width: 5px;
        height: 70px;
        margin: 20px 0 0 10px;
        padding: 0 0 0 0;
    }
    .bar {
        top: 30px;
        height: 100%;
        width: 5px;
        border-style: dashed;
        border-left: 5px;
        border-color: #FFF;
        position: fixed;
        left: 50%;
    }
    .ai {
        position: absolute;
        right: 10px;
        background-color: #FFF;
        width: 5px;
        height: 70px;
        margin: 164px 0 0 10px;
        padding: 0 0 0 0;
    }

    .ball {
        position: absolute;
        left: 50px;
        bottom: 69px;
        width: 20px;
        height: 20px;
        border-radius: 50%;
        background-color: #FFF;
    }
    </style>
    <script src="sprite.js" defer="defer"></script>
</head>
<body>
    <div class="mainDiv">
        <div class="player"></div>
        <div class="bar"></div>
        <div class="ai"></div>
        <div class="ball"></div>
    </div>
</body>
</html>

最佳答案

document.getElementsByClassName('player') 返回具有类 player 的元素(类似数组)的 NodeList。您需要遍历列表并将样式更改应用于每个列表:

var players = document.getElementsByClassName('player');
for(var i = 0; i < players.length; i++)
    players[i].style.marginTop = playerPosition+"px";

或者我猜如果你只有一个,将它应用于第 0 个元素。

fiddle

关于javascript - 通过 JavaScript 使用变量更改边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27663912/

相关文章:

javascript - 用于标记和向量的 Openlayers zIndex

javascript - 当我按下提交按钮时,我的页面不断刷新

html - 滚动在 HTML 表格中不起作用

html - 标签背景颜色不起作用

javascript - 新的 Google 日历登陆页面滚动

javascript - 如果没有单击任何 div,则 Angular 禁用应用按钮

Javascript 倒计时与暂停和恢复

php - CodeIgniter 表单验证不工作

html - 如何在 Bootstrap 中制作两个等高的列?

javascript - Chartist.js 条形图填充轴