首页 > 解决方案 > JavaScript getElementAt() 命令仅返回 [object Object]

问题描述

我正在使用 CodeHS JavaScript 版本。我正在制作一个蛇程序。当我遇到一个元素(SNAKEY)以停止程序时,我试图调用它,但是当我尝试时

if(direction == NORTH) {
    if(elemTopRight == SNAKEY)
         {
            gameOver();
        } else if(elemTopLeft == SNAKEY) {
            gameOver();
        } 
    }

(elemTopRight 和 elemTopLeft 是 getElementVariable)

它只在我的终端中返回 [object Object]。我的 getElements 和我的 SNAKEY 元素都是全局变量,但是 getElementAt 在遇到它时不会返回 SNAKEY。当我遇到它们时,我需要它来返回元素的名称。

对于其余的代码上下文(不,它不漂亮):

var elemTopRight = getElementAt(posX - 1, posY - 1);
var elemTopLeft = getElementAt(posX + 11, posY - 1);
var elemBottomRight = getElementAt(posX - 1, posY + 11);
var elemBottomLeft = getElementAt(posX + 11, posY + 11);
var elemCenterTop  = getElementAt(posX + 5, posY - 1);
var elemCenterBottom  = getElementAt(posX + 5, posY + 11);
var elemCenterRight  = getElementAt(posX + 11, posY + 5);
var elemCenterLeft  = getElementAt(posX - 1, posY + 5);
function checkCollision() {
elemTopLeft = getElementAt(posX - 1, posY - 1);
elemTopRight = getElementAt(posX + 11, posY - 1);
elemBottomLeft = getElementAt(posX - 1, posY + 11);
elemBottomRight = getElementAt(posX + 11, posY + 11);
elemCenterTop  = getElementAt(posX + 5, posY - 1);
elemCenterBottom  = getElementAt(posX + 5, posY + 11);
elemCenterRight  = getElementAt(posX + 11, posY + 5);
elemCenterLeft  = getElementAt(posX - 1, posY + 5);
if(direction == NORTH) {
    if(elemTopRight == SNAKEY)
         {
            gameOver();
        } else if(elemTopLeft == SNAKEY) {
            gameOver();
        } 
    }
    println(elemTopRight + ", " + elemTopLeft);
    if(direction == SOUTH) {
         if(elemBottomLeft != null && elemBottomLeft != food) {
            gameOver();
        } else if(elemBottomRight != null && elemBottomRight != food) {
            gameOver();
        }
    }
    if(direction == EAST) {
         if(elemBottomRight != null  &&  elemBottomRight != food) {
            gameOver();
        } else if(elemTopRight != null && elemTopRight != food) {
            gameOver();
        }
    }
    if(direction == WEST) {
         if(elemBottomLeft != null && elemBottomLeft != food) {
            gameOver();
        } else if(elemTopLeft != null && elemTopLeft != food) {
            gameOner();
    }

}
}
/////////////////////////////////////////////////////////////
var SNAKEY = new Rectangle(SNAKE_DIM, SNAKE_DIM);
function draw() {
checkCollision();
checkWalls();
SNAKEY = new Rectangle(SNAKE_DIM, SNAKE_DIM);
SNAKEY.setPosition(posX, posY);
SNAKEY.setColor(Color.green);
add(SNAKEY);
move();
}

标签: javascriptobjectreturnelement

解决方案


如果您将对象转换为如下行中的字符串:

println(elemTopRight + ", " + elemTopLeft);

它将返回 [object Object]

elemTopRight是一个带有变量的对象。(可能是 X 和 Y)使用不同的方式记录其内容。

喜欢:console.log(elemTopRight)


推荐阅读