提问者:小点点

动态更改HTMLJSON的图像源


我一直在尝试用Firebase数据库中的JSON数据制作一些CSS卡。主要的想法是使用来自Firebase的数据,我试图建立从一个表格的每个提交CSS卡。

在表单提交过程中,用户选择表单所属类别,并在CSS卡片中显示特定的图像。

随着CSS卡的动态创建,整个HTML代码都是使用JS构建的。

首先,这是从Firebase获取数据并调用函数创建CSS卡的代码。


  let reference = firebase.database().ref("data-block");
  reference.on("value",gotData);

现在检查创建CSS卡的函数。


function gotData(data){
  let x = data.val();
  let keys = Object.keys(x);
console.log(keys.length);
var q=0;
  for( let i=0;i<keys.length;i++){

    let a =keys[i];

    let title_a = expens[a].Entry;
    let category_a=expens[a].Category;

    console.log(title_a,category_a);
    
    let expense=document.querySelector(".card-list");
    
    expense.innerHTML+= `

        <article class="card">
        <header class="card-header">

        <h2>${title_a} </h2>
        </header>

        <div class="card-author">
            <a class="author-avatar" href="#">
                <img id="x" src=""/>
            </a>

            <svg class="half-circle" viewBox="0 0 106 57">
                <path d="M102 4c0 27.1-21.9 49-49 49S4 31.1 4 4"></path>
            </svg>

            <div class="author-name">
                <div class="author-name-prefix">Author</div>
                ${category_a}
            </div>

        
        </article>
        
    `  
}

正如您所看到的,图像的src没有声明,因为我不知道如何根据从数据库获取的类别分配不同的图像

我有3张像

shopping.png
food.png
learn.png

帮助我如何根据来自FireBase的数据为图像标记动态分配src。


共2个答案

匿名用户

function getImageByCategory(category) {
  if (category == 'shopping') {
    return '<img src="shopping.png" />';
  } else if (category == 'food') {
    return '<img src="food.png" />'
  } else if (category == 'learn') {
    return '<img src="learn.png" />'
  }
}

`
<a class="author-avatar" href="#">
  ${getImageCategory(category_a)}
</a>

匿名用户

假设您知道类别的值,您可以创建一个对象,将这些类别值转换为图像名称。

尝试以下操作(将categoryA,categoryB和categoryC更改为作为category_a返回的值:

...
    let category_a=expens[a].Category;
    
    const IMAGE {
        categoryA: 'shopping.png',
        categoryB: 'food.png'.
        categoryC: 'learn.png'
    }

    console.log(title_a,category_a);
    
    let expense=document.querySelector(".card-list");
    
    expense.innerHTML+= `

        <article class="card">
        <header class="card-header">

        <h2>${title_a} </h2>
        </header>

        <div class="card-author">
            <a class="author-avatar" href="#">
                <img id="x" src=${IMAGE[category_a]}/>
            </a>
...