Составить функцию
Здравствуйте! Помогите составить функцию!
Имеется следующее: <div class="flok"> <select class="cd-select"> <option selected="selected" value="-1">Выбрать ответ</option> <option value="1">ответ1</option> <option value="0">ответ2</option> <option value="0">ответ3</option> <option value="0">ответ4</option> </select> </div> <div id="score"></div> Логика такова: При изменении select (при выборе какого-либо ответа), если его value = 1 (ответ правильный), то к переменной прибавляем 10. И выводим ее в div, с id = score. Если value = 0 (ответ неправильный), то отнимаем 5, и также выводим в div. И если 3 раза выбран неправильный ответ, то 3 раза будут отниматься очки. Самостоятельно дошел до этого: function count(){ $var = 0; if ($("select").bind("change")) { if ($("select").val() == 1) $var = $var + 10; else $var = $var - 5; } $("#score").text($var); return; } Помогите довести до ума! Спасибо! |
День добрый! После долгих "мучений", получилось следующее. Вот итог:
<div class="flok" id="dom"> <select id ="selec"> <option selected="selected" disabled="disabled" value="-1">Выбрать ответ</option> <option value="1">ответ1</option> <option value="0">ответ2</option> <option value="0">ответ3</option> <option value="0">ответ4</option> </select> </div> $(document).ready(function(){ var a = 0; $("#selec").bind("change", function(){ $(".yes, .no, #score").remove() switch ($(this).val()) { case "1": $('<div class="yes"></div><div id="score"></div>').insertAfter('#dom').show("bounce", { times: 3 }, "slow"); a = a + 5; $("#score").text(a); break; case "0": $('<div class="no"></div><div id="score"></div>').insertAfter('#dom').show("bounce", { times: 3 }, "slow"); a = a - 10; $("#score").text(a); break; } }); }); 1. После выбора правильного ответа - "выскакивает" зеленый значок и прибавляется 5 баллов. ![]() 2. После выбора неправильного ответа - "выскакивает" красный значок и отнимается 10 баллов. ![]() Такой вопрос С одним select'ом работает отлично. Но на странице, таких select'ов, предполагается много. Как заставить скрипт работать со всеми? Или может я изначально неправильно делаю скрипт? Пните в нужную сторону, или укажите ошибки. Спасибо! P.S. Я извиняюсь, но по-моему я ошибся.Тему нужно перенести в jQuery. |
Цитата:
$(".selec") и html <select class ="selec"> |
Спасибо за ответ vadim5june!
id ="selec" убрал вообще, событие теперь отлавливаю так: $("select").bind("change", function(){..... Сейчас картина такая: <div class="flok" id="dom1"> <select> <option selected="selected" disabled="disabled" value="-1">Выбрать ответ</option> <option value="1">ответ1</option> <option value="0">ответ2</option> <option value="0">ответ3</option> <option value="0">ответ4</option> </select> </div> <div class="flok" id="dom2"> <select> <option selected="selected" disabled="disabled" value="-1">Выбрать ответ</option> <option value="1">ответ1</option> <option value="0">ответ2</option> <option value="0">ответ3</option> <option value="0">ответ4</option> </select> </div> <div class="flok" id="dom3"> <select> <option selected="selected" disabled="disabled" value="-1">Выбрать ответ</option> <option value="1">ответ1</option> <option value="0">ответ2</option> <option value="0">ответ3</option> <option value="0">ответ4</option> </select> </div>...... select'ы отличаются по id - dom1, dom2, dom3... и.т.д. Хотелось бы, чтобы зеленый или красный значок выскакивал напротив того select'а, в котором, в данный момент выбирают ответ и оставался там. В итоге, напротив каждого select'а должны быть значки(зеленый или красный). Как сделать, чтобы скрипт понимал в каком селекте идет изменение, выставлял там значок и не удалял его? |
Цитата:
ведь $(this).parent() будет указывать на родительский див куда и надо вставлять информацию |
$(this).parent() !!!! Ну конечно! Это то что надо! Спасибо!
|
Теперь все работает как задумывалось!:) Результат можно посмотреть здесь:zazaba.ru
|
Часовой пояс GMT +3, время: 11:17. |