调用id()时出现意外的令牌)

Unexpected token ) when calling id()

本文关键字:意外 令牌 id 调用      更新时间:2023-09-26

我正在学习OOP,我相信我已经很擅长在尝试使用函数检索值时出错。但这次我真的被卡住了。在尝试调用appendChilds() 中的函数id()placeCards()时,我一直收到一个"意外令牌)"

function GUI(player)
{
    for (var i = 0, j = arguments.length; i <= j; i++)
    {
        var display = document.createElement("div");
        id = function()
        {
            idElem = document.createElement("p");
            idElem.appendChild(document.createTextNode(
                                 player.name == "Player" ? "You" : "Casino"));
            return idElem;
        }
        placeCards = function()
        {
            for (var card = 0, totalCards = player.hand.length;
                 card <= totalCards;
                 card++)
                var cardElem = document.createElement("img");
                setAttributes(cardElem,
                {
                    "id" : (player.name == "Player" ? "player" : "casino")
                           + "Card" + card,
                    "class" : "card",
                    "src" : "images/Cards/Back.png",
                    "alt" : "Back of a card",
                    "title" : "Back of a card"
                });
                return cardElem;
            }
            appendChilds(display, {id(), placeCards()});
            table.appendChild(display);
        }
    }
    player = new Player("Player");
    GUI(player);

我为appendChilds构建的辅助函数如下:

function setAttributes(element, attributes)
{ 
    for (var key in attributes) { 
        element.setAttribute(key, attributes[key]); 
    }
}

任何与手头问题有关的帮助或学习OOP的可靠资源都将不胜感激。

{...}定义了一个对象文字,它需要键值对。您所拥有的看起来更像是一个数组,它是用[...]定义的。

这里可能是这样的:

appendChilds(display, {id(), placeCards()});

我不知道你想做什么,但这种语法肯定不对。

您可能想要一个对象文字,它采用键值对。

appendChilds(display, {
    id: id(),
    cards: placeCards()
});

尽管具体使用什么键取决于函数所期望的内容。

或者可能是一个数组?

appendChilds(display, [id(), placeCards()]);

另外,您所说的appendChilds函数被标记为setAttributes,并且似乎没有附加任何子函数。你确定这是对的吗?