计算号码 ID

Calculating Number IDs

我不太确定如何在标题中表达这一点,因此感谢您点击此处。

那么现在我的问题是:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<style>
    .block {
        background-color: black;
    }
</style>
<table border='1px'>
    <tr>
        <td id='11'></td>
        <td id='12'></td>
        <td id='13'></td>
        <td id='14'></td>
        <td id='15'></td>
    </tr>
    <tr>
        <td id='21'></td>
        <td id='22'></td>
        <td id='23'></td>
        <td id='24'></td>
        <td id='25'></td>
    </tr>
    <tr>
        <td id='31'></td>
        <td id='32'></td>
        <td id='33' class="block"></td>
        <td id='34'></td>
        <td id='35'></td>
    </tr>
    <tr>
        <td id='41'></td>
        <td id='42'></td>
        <td id='43'></td>
        <td id='44'></td>
        <td id='45'></td>
    </tr>
    <tr>
        <td id='51'></td>
        <td id='52'></td>
        <td id='53'></td>
        <td id='54'></td>
        <td id='55'></td>
    </tr>
</table>
<button onclick="blockUp()">Up</button>
<button onclick="blockDown()">Down</button>
<button onclick="blockLeft()">Left</button>
<button onclick="blockRight()">Right</button>
<script>
var blockUp = function() {
    var oldBlock = document.getElementsByClassName("block")[0].id;
    var newBlock = Math.floor(oldBlock + 1);
    document.getElementById(newBlock).classList.add("block");
    document.getElementById(oldBlock).classList.remove("block");
}

    
</script>
</body>
</html>
此代码不完整,因为我想先解决这个问题。

我想使用 Math.floor 获取某个 ID(因此,ID 为数字),并对其进行操作。更具体地说,我想找到当前具有 .block class 的单元格的 ID,使用 Math.floor(oldBlock + 1) 找到该单元格上方的单元格的 ID,删除 class,然后将 class 添加到新单元格。我使用了变量,以便该函数始终能够 运行,而不是制作一百万个 if/else if/else 语句。

不幸的是,这不适用于我当前的代码。我怎样才能做到这一点?

感谢任何帮助!

你必须确保 "oldBlock" 包含一个数字,然后再尝试用它做数学运算(比如加 1):

var oldBlock = +document.getElementsByClassName("block")[0].id;

这是一种方法。您也可以使用 parseInt():

var oldBlock = parseInt(document.getElementsByClassName("block")[0].id, 10);

"id" 属性 的值将是一个字符串,因此如果您在加法运算中涉及它,JavaScript 会将其视为字符串连接。通过强制它首先是一个数字,你会得到你想要的效果。