Javascript.RU

 
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.06.2009, 18:44
Аватар для Avaria
Интересующийся
Отправить личное сообщение для Avaria Посмотреть профиль Найти все сообщения от Avaria
 
Регистрация: 09.06.2009
Сообщений: 12

не выходит посчитать отмеченные чекбоксы
Некокое подобие доски объявлений, вся основная суть не вжна важен маленкьий момент. надо выбрать необходимые строки (поставить галочку в чекбоксе) при этом в скрытом поле должна прибавиться 1, и чекбоксик стать неактивным. При нажатии на кнопочку рядом выводится количество выбранных "объявлений".
То что было сделано приведено ниже, проблема состоит в том, что когда начинаю ставить галочку 1) считать начинает только после изменения второго чекбокса, 2) и вообще блакировка чекбокса срабатывает через раз
<form name="f1">
         <table>
         <tr><td><input type="checkbox" id="favID" onChange="change(1,0)" /></td><td>куплю</td><td>222-22-22</td></tr>
         <tr><td><input type="checkbox" id="favID" onChange="change(1,1)" /></td><td>Продам</td><td>111-11-11</td></tr>
         <tr><td><input type="checkbox" id="favID" onChange="change(1,2)" /></td><td>Поменяю</td><td>789-88-88</td></tr>
         <tr><td><input type="checkbox" id="favID" onChange="change(1,3)" /></td><td>Отдам</td><td>999-99-99</td></tr>
         </table>
         <input type="text" name="kol_checked" value="0">
<DIV>
<input type="button" value="Добавить отмеченное в избранное" onClick="add_fav(f1.kol_checked.value)" checked="checked"> &nbsp;&nbsp;
<a href="favorite.html"><span id="fav_count">Избранное ()</span></a>
</DIV>
</form>
<script>
	var i;
	i=f1.kol_checked.value;
	function change(a,b)
	{if(f1.elements[b].checked!=="checked")
	  {f1.kol_checked.value=a*1+f1.kol_checked.value*1;}
	}
		  
	function add_fav(n)
	{i=i*1+n*1;
	 fav_count.innerHTML="Избранное("+i+")";
	};
	</script>
  #2 (permalink)  
Старый 09.06.2009, 19:58
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

  • Вы проверяете свойство DOM-объекта, а не атрибут тега, поэтому checked == true;
  • Идентификаторы должны быть уникальными;
  • Поиск элемента по идентификатору выполняется с помощью document.getElementById.

Последний раз редактировалось Octane, 09.06.2009 в 20:00.
  #3 (permalink)  
Старый 10.06.2009, 02:36
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Цитата:
и чекбоксик стать неактивным
а ничего, если пользователь передумает?

передавать "a" не имеет смысла - все равно везде 1 передается

если нужно получить доступ к checkbox'у можно передать его таким образом
<input type="checkbox" id="favID" onChange="change(this)" />
<script>
    function change(checkbox)
    {if(checkbox.checked...
</script>


умножать на 1 имеет смысл только строки, а лучше Number(f1.kol_checked.value) или parseInt(f1.kol_checked.value)

Последний раз редактировалось x-yuri, 10.06.2009 в 02:38.
  #4 (permalink)  
Старый 10.06.2009, 06:52
Аватар для Avaria
Интересующийся
Отправить личное сообщение для Avaria Посмотреть профиль Найти все сообщения от Avaria
 
Регистрация: 09.06.2009
Сообщений: 12

Спасибо за ЦУ, подправила. но основная проблема так и не решена считать начинает все также только после изменения второго чекбокса, и блокировка чекбокса срабатывает при переходе к следующему элементу
  #5 (permalink)  
Старый 10.06.2009, 09:45
Аватар для Avaria
Интересующийся
Отправить личное сообщение для Avaria Посмотреть профиль Найти все сообщения от Avaria
 
Регистрация: 09.06.2009
Сообщений: 12

одну беду разрешила, пришла другая
в общем, теперь у нас все реагирует на событие onClick
<form name="f1">
         <table>
         <tr><td><input type="checkbox" id="favID01" onClick="change(this)" /></td><td>куплю</td><td>222-22-22</td></tr>
         <tr><td><input type="checkbox" id="favID02" onClick="change(this)" /></td><td>Продам</td><td>111-11-11</td></tr>
         <tr><td><input type="checkbox" id="favID03" onClick="change(this)" /></td><td>Поменяю</td><td>789-88-88</td></tr>
         <tr><td><input type="checkbox" id="favID04" onClick="change(this)" /></td><td>Отдам</td><td>999-99-99</td></tr>
         </table>
         <input type="text" name="kol_checked" value="0">
<DIV>
<input type="button" value="Добавить отмеченное в избранное" onClick="add_fav(f1.kol_checked.value)" checked="checked"> &nbsp;&nbsp;
<a href="favorite.html"><span id="fav_count">Избранное ()</span></a>
</DIV>
</form>

Теперь, не смотря на условие и состояние чекбокса (поставленна там галочка или нет) он все равно прибавляет 1
var i;
	i=f1.kol_checked.value;
	function change(checkbox)
	{	if(checkbox.checked==true)
	{f1.kol_checked.value=f1.kol_checked.value*1-1;}
	else
	{f1.kol_checked.value=1+f1.kol_checked.value*1;}
	}
  #6 (permalink)  
Старый 10.06.2009, 10:15
Аватар для Avaria
Интересующийся
Отправить личное сообщение для Avaria Посмотреть профиль Найти все сообщения от Avaria
 
Регистрация: 09.06.2009
Сообщений: 12

Все. Нашла все ошибки. Всем спасибо за участие :rolleyes:
 



Опции темы Искать в теме
Искать в теме:

Расширенный поиск