首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何链接到HTML/JavaScript中具有可变名称的本地文件?

如何链接到HTML/JavaScript中具有可变名称的本地文件?
EN

Stack Overflow用户
提问于 2022-08-19 04:17:18
回答 3查看 46关注 0票数 0

我有一个本地文件夹,里面有扑克牌的图像(每一张牌一张),并有一个特定的命名模式:

代码语言: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图像/ Jack _ of clubs2.png“引用一个特定的文件(例如,俱乐部的杰克文件)。

但是,在使用随机卡片生成器时,我需要根据函数的结果链接到文件(显示图像)(因此,需要在特定时刻显示的文件的名称是函数返回的变量)。该函数的代码如下:

代码语言:javascript
复制
//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
}

如何打开该函数的结果是哪个文件名的图像?谢谢。

EN

回答 3

Stack Overflow用户

发布于 2022-08-19 04:39:07

在您的函数中,您需要声明变量,例如使用const,除非您之前已经定义了它们。一旦有了变量,就可以使用模板文字来获取文件名。因此,我建议采取以下措施:

代码语言:javascript
复制
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 randomRank = card_rankings[Math.floor(Math.random()*13)];
    const randomSuit = card_suits[Math.floor(Math.random()*4)];
    const randomCard = `${randomRank}_of_${randomSuit}.png`;  //you can change this so that it fits the format of how your pictures are saved
    return randomCard;
}

然后,您需要在html中找到图像并更改其源属性:

代码语言:javascript
复制
const img = document.querySelector('img'); //or give it an id and use that with #
img.src=Random_Card_Generator();
票数 0
EN

Stack Overflow用户

发布于 2022-08-19 04:40:04

不需要每次调用函数时都声明数组。

您可以声明它们一次,并在所有其他函数中使用它们。

此外,还可以设置<img/>标记的<img/>属性以设置要显示的文件的名称。

请参阅下面的示例代码。

代码语言:javascript
复制
const card_rankings = ["2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace"];
const card_suits = ["spades", "clubs", "hearts", "diamond"];
const cardPlacement = document.getElementById('cardChosen');
const imagePlacement = document.getElementById('cardImg');

//Returns a random card as an object with ranking and suit as attributes
function randomCardGenerator() {
  let randomCard = {
    ranking: card_rankings[Math.floor(Math.random() * 13)],
    suit: card_suits[Math.floor(Math.random() * 4)]
  }
  return randomCard;
}


function chooseNewCard() {
  let cardChosen = randomCardGenerator();
  let imageFilename = cardChosen.ranking + '_of_' + cardChosen.suit + '.png';

  cardPlacement.innerHTML = cardChosen.ranking + ' of ' + cardChosen.suit;
  console.log(imageFilename);
  imagePlacement.src = imageFilename;
}
代码语言:javascript
复制
img {
  border: 2px solid black;
  margin: 5px;
  display: block;
}
代码语言:javascript
复制
<button onclick="chooseNewCard()">Generate Card</button>
<img id="cardImg" src="" height="100" width="60" />
<div id="cardChosen"></div>

票数 0
EN

Stack Overflow用户

发布于 2022-08-19 04:40:32

是的,您的Random_Card_Generator函数将返回一个包含card_rankings、card_suits索引的对象。首先,如果要在此函数之外创建卡片名,则需要访问函数范围外的两个数组,但为了方便起见,我将在此函数中进行访问。

代码语言:javascript
复制
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)]}
    
   const selectedCardFileName = `${card_rankings[Random_Card.ranking]}_of_${card_suits[Random_Card.suit]}.png`;
    
   return selectedCardFileName
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73411787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档