2014-01-14 5 views
0

Я пытаюсь отобразить изображение, когда пользователь выбирает параметр в раскрывающемся списке, изображение будет отображаться после нажатия кнопки. Это моя идея о том, как это сделать, но я не совсем уверен, правильно ли это, поэтому я прошу других высказать мнение.Javascript dropdownlist on button/click event

Вот мой код и скрипка: http://jsfiddle.net/Bc6Et/1546/

HTML

<select name="" id="dropdownlist" size=""> 
    <option value="img1">Image</option> 
    <option value="img2">Image</option> 
    <option value="img3">Image</option> 
    <option value="">so on and so forth</option> 
</select> 
<input type="button" value="Show Image" onclick="showimg()" class="button"> 

JavaScript/JQuery

function showimg() { 
     var q = document.getElementById("dropdownlist"); 
     var selected = q.options[q.selectedIndex].value; 

     var src = "/var/www/VAA/img"; 
     if (selected === img1) { 
      show_image("/var/www/VAA/img/img1.png"); 
     } 

     elseif(selected === img2) { 
      show_image("/var/www/VAA/img2.png"); 
     } 
    } 

    function show_image(src, width, height, alt) { 
     var img = document.createElement("img"); 
     img.src = src; 
     document.body.appendChild(img); 
    } 

Или я мог бы использовать случай переключатель/перерыва заявление вместо если/другими. Цените всю помощь tnx oh и еще одну вещь, которую изображения на моем рабочем столе подумали, что вам может понадобиться эта информация

+1

/вар/WWW/VAA/IMG U забудьте указать расширение/вар/WWW/VAA/img.png –

+0

oh tnx Я отредактирую его, считаете ли вы, что мой процесс или решение верны? –

+1

«if (q === img1)» кажется ошибкой, что такое img1? Переменная? должно ли оно быть «img1»? – Alex

ответ

1

Вместо того чтобы иметь инструкции if для каждого изображения, возможно, вы можете попробовать что-то вроде этого?

<option value="name_of_your_image">Image</option> 

А затем вызвать вашу функцию:

var src = "/var/www/VAA/"+selected+".png"; 
show_image(src); 

http://jsfiddle.net/Bc6Et/1558/

Я думаю, что это лучший вариант, если у вас есть много изображений.

+0

с этим методом значения параметра будут изменены вместо имен изображений? Правильно ли я понимаю? <значение параметра = "имя изображения в папке"> Изображение –

+0

Да. Если расширение одинаково для всех ваших изображений, вы можете добавить его в свой скрипт, как в примере. Если расширения отличаются друг от друга, вы можете указать его в значении вашего параметра:

1

Вы изучали неправильную переменную. q всегда является выпадающим элементом и не имеет ничего общего с тем, какая опция выбрана и/или их соответствующее значение.
img1 и img2 должны быть объявлены как строка, так как они не являются переменными.

function showimg() { 
    var q = document.getElementById("dropdownlist"); 
    var selected = q.options[q.selectedIndex].value; 

    console.log(selected); 

var src = "/var/www/VAA/img"; 
if (selected === "img1") { 
    show_image("/var/www/VAA/img"); 
} 

else if (selected === "img2") { 
    show_image("/var/www/VAA/img"); 
    } 
} 

function show_image(src, width, height, alt) { 
    var img = document.createElement("img"); 
    img.src = src; 
    console.log(src); 
    document.body.appendChild(img); 
} 

working fiddle

+0

вы близко, но его половина правильная. см. ответ mr shibby – Jai

+0

как это? он работает в скрипке O_o – Alex

+0

Я имел в виду, как считается, что изображение является «png» или «jpg». – Jai

1

Есть несколько ошибок

function showimg() { 
    var q = document.getElementById("dropdownlist"); 
    var selected = q.options[q.selectedIndex].value; 

    var src = "/var/www/VAA/img"; 
    if (selected === "img1") { 
     //_____^__________ 
     show_image("/var/www/VAA/img"); 
    } 

    else if(selected === "img2") { 
    //__^__________^______ 
     show_image("/var/www/VAA/img"); 
    } 
} 

function show_image(src, width, height, alt) { 
    var img = document.createElement("img"); 
    img.src = src; 
    document.body.appendChild(img); 
} 

FIDDLE

+0

'q! == selected' я надеюсь, что вы его получите. см. ответ alex, это правильно. – Jai

1

Это будет работать, но вам потребуется один, если условие для каждого изображения у вас есть. Почему вы не помещаете все изображения в одну папку и не создаете конкатенацию строк изображения?

src = "/var/www/VAA/"; 
var selected = q.options[q.selectedIndex].value; 
show_image(src+selected); 
1

У меня есть предложение, чтобы у вас не было много условных операторов для определения того, какое изображение должно отображаться: что, если вы поместите изображение src (или, может быть, просто имя файла, если хотите), как значение опции поле выбора, как и так:

<select name="image" id="dropdownlist"> 
    <option value="/source/for/image1.png">Image 1</option> 
    <option value="/source/for/image2.png">Image 2</option> 
    <option value="/source/for/image3.png">Image 3</option> 
</select> 
<input type="button" value="Show Image" class="button" /> 

И тогда вы можете изменить код JQuery следующим образом:

$('.button').on('click', function() { 
    var image = $('<img src="' + $('#dropdownlist').val() + '" />'); 
    $('body').append(image); 
});