我有一个选项表单,我想为我选择的选项标签的每个元素显示一个与JSON文件不同的图像

问题描述 投票:0回答:1

因此,我创建了一个选项表单,在它的底部,我有一个div,我想在其中显示基于JSON文件的图像,该图像基于我选择的选项表单的声音。更具体地说,我将在此处写下一些代码:

HTML:

<select name="classes">
  <option value="knight">Knight</option>
  <option value="mage">Mage</option>
  <option value="priest">Priest</option>
</select>

JS:

const classes = [
    {
        id: 1,
        class: "knight",
        male: "../class-png/male-knight.png",
        female:"../class-png/female-knight.png"
    },
    {
        id:2,
        class:"mage",
        male:"../class-png/male-mage.png",
        female:"../class-png/female-mage.png"
    },
    {
        id: 3,
        class: "priest",
        male: "../class-png/male-priest.png",
        female:"../class-png/female-priest.png",
    }
];

因此,如果我选择“骑士”选项,我想在下面的div中显示骑士的两个png,以此类推。 。 。我将使用JSON对象的ID来做到这一点

javascript jquery json html-select
1个回答
0
投票

您的HTML将是这样

<select class="classes" name="classes">
   <option value="knight">Knight</option>
   <option value="mage">Mage</option>
   <option value="priest">Priest</option>
</select>
<div id="imageWrapper"></div>

这是基于您选择的选项值的jquery代码

<script>
    let selectedClass = "knight";
    let imagesArray = [];
    const classes = [
    {
        id: 1,
        class: "knight",
        male: "../class-png/male-knight.png",
        female:"../class-png/female-knight.png"
    },
    {
        id:2,
        class:"mage",
        male:"../class-png/male-mage.png",
        female:"../class-png/female-mage.png"
    },
    {
        id: 3,
        class: "priest",
        male: "../class-png/male-priest.png",
        female:"../class-png/female-priest.png",
    }
];
// To load Images for pre-selected option
addImage();
$(document).ready(() => {
    $(".classes").change(() => {
        $("#imageWrapper").empty();
        selectedClass = $('.classes :selected').val();
        // change image on option change
        addImage();
    })
})
function addImage (){
    $.each(classes, function( index, value ) {
        if(value.class == selectedClass){
            $("#imageWrapper").prepend('<img id="image" src="'+value.male+'" /><img id="image" src="'+value.female+'" />')
        }
    });
}
</script>
© www.soinside.com 2019 - 2024. All rights reserved.