Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Составить функцию (https://javascript.ru/forum/dom-window/38067-sostavit-funkciyu.html)

serg47 17.05.2013 14:52

Составить функцию
 
Здравствуйте! Помогите составить функцию!
Имеется следующее:
<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;
}

Помогите довести до ума! Спасибо!

serg47 18.05.2013 20:47

День добрый! После долгих "мучений", получилось следующее. Вот итог:

<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.

vadim5june 19.05.2013 09:04

Цитата:

Сообщение от serg47
Как заставить скрипт работать со всеми?

Вместо $("#selec") поставьте поиск по классу
$(".selec")

и html
<select class ="selec">

serg47 19.05.2013 19:19

Спасибо за ответ 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'а должны быть значки(зеленый или красный). Как сделать, чтобы скрипт понимал в каком селекте идет изменение, выставлял там значок и не удалял его?

vadim5june 19.05.2013 20:31

Цитата:

Сообщение от serg47
Хотелось бы, чтобы зеленый или красный значок выскакивал напротив того select'а, в котором, в данный момент выбирают ответ и оставался там

Помоему Вам id не нужны
ведь $(this).parent() будет указывать на родительский див куда и надо вставлять информацию

serg47 20.05.2013 10:12

$(this).parent() !!!! Ну конечно! Это то что надо! Спасибо!

serg47 21.05.2013 17:48

Теперь все работает как задумывалось!:) Результат можно посмотреть здесь:zazaba.ru


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