You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在HTML/JavaScript中根据变量名链接本地扑克牌图片?

问题

我有一个存放扑克牌图片的本地文件夹,每张牌对应一张图片,命名规则如下:

2_of_clubs.png
2_of_diamond.png
2_of_hearts.png
2_of_spades.png
3_of_clubs.png
...

图片文件夹与HTML、CSS、JS文件所在的程序文件夹同级,可通过/Cards images/jack_of_clubs.png引用梅花J的图片。

现在我用了一个随机卡牌生成器函数,需要根据函数返回的结果加载并显示对应的图片。函数代码如下:

//Returns a random card as an object with ranking and suit as attributes
function Random_Card_Generator(){
    card_rankings = ["2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace"]
    card_suits = ["spades", "clubs", "hearts", "dimond"]
    Random_Card = {ranking: card_rankings[Math.floor(Math.random()*13)], suit: card_suits[Math.floor(Math.random()*4)]}
    return Random_Card
}

请问如何根据该函数的结果打开对应的图片?


解决方案

1. 修正函数拼写问题

首先注意到函数里的dimond是拼写错误,正确应为diamond,否则生成的文件名会和实际图片不匹配。同时建议用const声明变量,避免全局变量污染:

function Random_Card_Generator(){
    const card_rankings = ["2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace"];
    const card_suits = ["spades", "clubs", "hearts", "diamond"]; // 修正拼写错误
    const randomCard = {
        ranking: card_rankings[Math.floor(Math.random()*13)],
        suit: card_suits[Math.floor(Math.random()*4)]
    };
    return randomCard;
}

2. 生成匹配的图片路径

根据图片命名规则([小写排名]_of_[小写花色].png)和你的引用路径,把函数返回的对象转换成对应的图片URL:

function getCardImageData() {
    const card = Random_Card_Generator();
    // 将排名和花色转为小写,匹配文件名格式
    const rankingLower = card.ranking.toLowerCase();
    const suitLower = card.suit.toLowerCase();
    // 拼接完整图片路径
    const imageUrl = `/Cards images/${rankingLower}_of_${suitLower}.png`;
    // 返回卡牌信息和图片路径,避免重复调用随机函数
    return { card, imageUrl };
}

3. 在页面中显示图片

有两种常用方式实现图片显示:

方式一:动态创建img元素插入页面

如果页面没有预设的图片容器,可动态创建并插入:

const { card, imageUrl } = getCardImageData();
// 创建img元素
const cardImg = document.createElement('img');
cardImg.src = imageUrl;
cardImg.alt = `${card.ranking} of ${card.suit}`; // 设置替代文本提升可访问性
// 将图片插入到页面指定容器,比如id为card-container的元素
document.getElementById('card-container').appendChild(cardImg);

方式二:更新已有img元素的src属性

如果页面已经有用于显示卡牌的img标签(比如<img id="random-card" alt="Random playing card">),直接更新它的属性即可:

const { card, imageUrl } = getCardImageData();
const cardImg = document.getElementById('random-card');
cardImg.src = imageUrl;
cardImg.alt = `${card.ranking} of ${card.suit}`;

内容的提问来源于stack exchange,提问作者Danila

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 04:54:24