【问题标题】:Img src argument in function. not displaying image函数中的 Img src 参数。不显示图像
【发布时间】:2016-09-27 01:46:45
【问题描述】:

我已寻找解决此问题的方法,但找不到任何具体内容。我正在使用我有单独图像的一副卡片编写一个 javascript 记忆卡游戏。在打印的 html 表中,我有一个带有 onlick 事件的 img,它调用我的 selectCard() 函数。此函数接受参数(img id)并使用该 id 将 img src 从 back.gif 更改为相应的前卡(存储在名为 preloadImages 的数组中)

我的问题是,当发生这种情况时,图像 src 变为 [object%20HTMLImageElement].png 而不是 0.png 或 23.png 或任何被点击的卡片。

有人可以帮忙吗?下面的代码块

//sets up the table for the game
function setGame(){
            document.getElementById("gameArea").innerHTML = "";
            var newTable = "<table border ='1' align='center'><tr>";
                for(i=0; i<4; i++){
                        newTable +="<tr>";
                        for(j=0; j<13; j++){
                                var cardId = j+i*13;
                                newTable += "<td><img id = "+cardId+" src='back.gif' width='100' height='140' onclick='selectCard("+cardId+")'/></td>";
                                }
                                newTable += "</tr>";
                }
                newTable += "</table>";
            document.getElementById("gameArea").innerHTML = newTable;
            }

//selectCard Function
function selectCard(Id){
            var imageRef = document.getElementById(Id);
            if (imageRef.src.match("back.gif")) {
                    imageRef.src = preloadImages[imageRef]+'.png';
                    }
                    else {
                        imageRef.src = "back.gif";
                    }
        }

【问题讨论】:

    标签: javascript


    【解决方案1】:

    我很确定 [object%20HTMLImageElement] 是一个 HTML 元素,而不是图像的 ID。如果我理解您正在尝试正确执行的操作,您将获取图像的 ID 并将扩展名“.png”添加到它的末尾,然后再将图像的 src 设置为该值。无论您在代码中做什么,都是将 imageRef 的 src 更改为 imageRef 本身,而不是它的 ID。试试这个:

    function selectCard(Id){
        var imageRef = document.getElementById(Id);
        if (imageRef.src == "back.gif") {
            imageRef.src = Id + ".png";
        } else {
            imageRef.src = "back.gif";
        }
    }
    

    【讨论】:

    • 这是我最初尝试的,它也不起作用。我有一个预加载图像的数组,如果可能的话,我想从那里拉出来。
    • 哦,我明白了。您仍然需要从数组中获取 ID/类名。试试 Sting 的回答
    • 如果我们使用 if (imageRef.src.match("back.gif")) { 这个解决方案有效,但是它仍然没有从 preloadImages 数组中提取图像。但它是可行的。谢谢!
    • 你想让我更新我对imageRef.src.match("back.gif")的回答吗?
    • 我仍然想看看是否有人有一个解决方案,允许我使用 preloadImages 数组作为 img id 值。我还有一个函数可以在游戏开始时洗牌,并调用 preloadImages 数组来洗牌。因此,尽管此解决方案有效,但它仅适用于已排序的卡片组。
    【解决方案2】:

    我可以通过使用以下代码行来解决这个问题

    imageRef.src = preloadImages[Id].src;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-20
      • 2021-04-27
      • 2014-06-23
      • 1970-01-01
      • 2015-07-26
      • 2023-03-28
      • 1970-01-01
      相关资源
      最近更新 更多