Отображение изображения в зависимости от двух входных переключателей

0

Я пытаюсь отобразить изображение, основанное на выборе 4 разных переключателей с двумя разными именами.

Например, первый набор переключателей должен выбрать модель продукта (две опции), а второй набор переключателей - цвет (два варианта).

Вот переключатели:

 <img src="Rack-BK.jpg" name="formula" id="formula">

<br>
<input type="radio" name="model" value="Rack" id="rack_option">Rack 
<input type="radio" name="model" value="NoRack" id="norack_option" >NoRack
<br><br>
<input type="radio" name="color" value="Black" id="black_option" > Black
<input type="radio" name="color" value="Gray" id="gray_option" > Gray

Это то, что работает, но только для выбора модели, но мне нужен цвет, который нужно добавить.

<script type='text/javascript'>
$(document).ready(function(){
    $("input:radio[name=model]").click(function() {
        var value = $(this).val();
        var image_name;
        if(value == 'Rack'){
            image_name = "Rack-BK.jpg";
        }else{
            if(value == 'NoRack'){
                image_name = "Without-Rack-BK.jpg";

            }
        }
         $('#formula').attr('src', image_name);
    });
});

Это то, что я пытался делать, но не работает:

    <script type='text/javascript'>
        $(document).ready(function(){
        $("input:radio[name=model]").click(function() 
    $("input:radio[name=color]").click(function() 


{
            var value = $(this).val();
        var image_name;


        if(value == 'Rack')

    { 
        if (value == 'Gray')
        {
            image_name = "Rack-GY.jpg";
        }


            image_name = "Rack-BK.jpg";
    }


        }else{

            if(value == 'NoRack')
    {
        if (value =='Gray'
        {
                    image_name = "Without-Rack-GY.jpg";
        }

    image_name = "Without-Rack-BK.jpg";

            }
 }
                $('#formula').attr('src', image_name);
    });
});

Теги:
radio-button

1 ответ

0

В этом случае представляется, что комбинация использования оператора switch и селектора "checked" будет полезной.

Я бы поместил обработчик событий в обе группы радио... в этом случае вход: radio [name = model] и input: radio [name = color] (явно определено в случае, если у вас есть другие переключатели на странице),

Затем внутри обработчика получает текущее выбранное значение для каждой группы и выполняет вашу обработку внутри операторов switch (лучше подходит для обработки большого количества типов if/else проверки, когда вы просто смотрите на значение элемента), Это означает, что если вы добавите дополнительные параметры, такие как синий, желтый и т.д., Вам будет легче заглянуть и обработать эти случаи.

TL; DR: Вот как вы могли это сделать:

$("input:radio[name=model], input:radio[name=color]").click(function() { // This handler runs when any of the radio buttons are clicked.
    var modelValue = $("input:radio[name=model]:checked").val(); // Find which model radio button is checked.
    var colorValue = $("input:radio[name=color]:checked").val(); // Find which color radio button is checked.

    var image_name = ""; // Initialize the image name to blank. We will be appending as we go.

    switch (modelValue) {
        case 'Rack':
            image_name += "Rack"; // Rack was selected, so use that value for the first part of the image.
            break;
        case 'NoRack':
            image_name += "Without-Rack"; // No Rack was selected, so use that value for the first part of the image.
            break;
        default:
            image_name += "Rack"; // Make sure there is a default value, or a broken image could occur!
            break;
    }

    switch (colorValue) {
        case 'Black':
            image_name += "-BK.jpg"; // Black was selected, so use that value for the last part of the image.
            break;
        case 'Gray':
            image_name += "-GY.jpg"; // Gray was selected, so use that value for the last part of the image.
            break;
        default:
            image_name += "-BK.jpg"; // Make sure there is a default value, or a broken image could occur!
            break;
    }

    $('#formula').attr('src', image_name); // Put the image value in the formula image field src.
});
  • 0
    Привет @adamgede - извини, но для меня это ново. Я не понял последнюю часть "поместите значение изображения в формулу image src" Куда идет путь к изображению? Я назвал изображения так: Rack-BK.jpg Rack-GY.jpg Without-Rack-BK.jpg Without-Rack-GY.jpg
  • 0
    Здравствуйте, @ user3321040 - я полагаю, что комментарий, который я там вставил, должен читать больше: «Использовать сгенерированный URL-адрес изображения в качестве источника изображения». Если вы сделали что-то вроде alert (image_name) в строке выше, вы увидите имя сгенерированного изображения. Это окончательное имя изображения должно быть путем к изображениям, как вы их назвали.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню