从事件处理程序调用函数时,它this不是由处理程序设置的(尽管您可以this根据 Xdazz 的答案从处理程序传递,或this根据 Kyle 的答案设置)。另一种方法是从与事件关联的事件对象中提取发送者元素:
function move(e) {
    if (!e)
        e = window.event;
    var sender = e.srcElement || e.target;
    //maybe some nested element.. find the actual table cell parent.
    while (sender && sender.nodeName.toLowerCase() != "td")
        sender = sender.parentNode;
    var myId = sender.id;
    alert(myId);
}
您还必须明确传递事件:
onclick="move(event)"
请注意,当表格单元格具有嵌套元素时,它们将成为“发送者”,因此要获取所需的元素(即表格单元格),您必须向上遍历。为了避免所有这些令人头疼的问题,请参阅下面如何通过代码附加处理程序。
现场测试用例。
也就是说,更好的做法是通过代码而不是内联来绑定点击事件——不要将 HTML 与 JavaScript 混合。为了实现这一点,有这样的代码:
window.onload = function() {
    var arrCells = document.getElementsByTagName("td");
    for (var i = 0; i < arrCells.length; i++) {
        var oCell = arrCells[i];
        if (oCell.id && oCell.id.substr(0, 1) == "A") {
            oCell.onclick = move;
        }
    }
}
使用上面的代码,您可以onclick=从 HTML 中删除内联调用并保留您的原始函数 -this将指向单击的表格单元格。
更新了小提琴。