Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не логичное поведение скрипта, простой пример (https://javascript.ru/forum/misc/8117-ne-logichnoe-povedenie-skripta-prostojj-primer.html)

FRIE 09.03.2010 10:18

Не логичное поведение скрипта, простой пример
 
function StatusSelect(){
var selected = $('#effectTypes').find('option[selected]');
if(selected.attr('id') == 'yes'){ alert('да')};
if(selected.attr('id') == 'no'){ alert('нет')};
};

Окошко селект 1

<select id='effectTypes' size=1 onChange='StatusSelect();' >
<option id='yes'>Да</option>
<option id='no'>Нет</option>
</select>

Окошко селект 2

<select id='effectTypes' size=1 onChange='StatusSelect();' >
<option id='yes'>Да</option>
<option id='no'>Нет</option>
</select>


Есть два окошка селект , в которых можно выбрать "да" и "нет".
При выборе должно вылезти окошко алерт с названием того что выбрали.
В первом селекте работает как надо, а во втором если выбираешь "нет" то показывает "да" и наоборот и зависит это от того что выбрано в первом селекте
Почему работает неправильно, где тут ошибка подскажите пожалуйста?

FRIE 09.03.2010 10:21

а я понял! у полей селект id одинаковые!, а как тогда сделать если у селектов id всегда разные ? не писать же каждому отдельный скрипт , если их например 1000.

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

Gvozd 09.03.2010 10:52

Цитата:

Сообщение от FRIE
как тогда сделать если у селектов id всегда разные ? не писать же каждому отдельный скрипт , если их например 1000.

присвойте им одинаковый класс

ZoNT 09.03.2010 12:08

<script>
function StatusSelect(o){
var id = o.options[o.selectedIndex].id;
alert(id);
};
</script>
<select size=1 onChange='StatusSelect(this);' >
<option id='yes'>Да</option>
<option id='no'>Нет</option>
</select>

Shaci 09.03.2010 12:30

<script type="text/javascript" src="jquery-1.3.2.js"></script>

<script type='text/javascript'>
$(function(){
    $('.effectTypes').change(function (){
        var selected = $(this).find('option[selected]');
        if(selected.attr('class') == 'yes'){ alert('да')};
        if(selected.attr('class') == 'no'){ alert('нет')};
    })
});
</script>

<select class='effectTypes' size=1' >
<option class='yes'>Да</option>
<option class='no'>Нет</option>
</select>

<select class='effectTypes' size=1' >
<option class='yes'>Да</option>
<option class='no'>Нет</option>
</select>

FRIE 09.03.2010 12:43

Цитата:

Сообщение от ZoNT (Сообщение 47204)
<script>
function StatusSelect(o){
var id = o.options[o.selectedIndex].id;
alert(id);
};
</script>
<select size=1 onChange='StatusSelect(this);' >
<option id='yes'>Да</option>
<option id='no'>Нет</option>
</select>

спасибо так работает =)


Часовой пояс GMT +3, время: 01:42.