Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2012, 10:53   #1
Dexes
Пользователь
 
Регистрация: 27.12.2011
Сообщений: 86
По умолчанию Не вызывается функция JS

Сижу уже пол дня бьюсь над тем, почему не вызывается функция selToString();
Когда добавляю несколько строк в Select и начинаю рандомно кидать их из одного селекта в другой, то иногда selToString все же вызывается и значение у selstring меняется. Вопрос: почему selToString не вызывается?
Код HTML:
<script>
function selToString() {
	var objCategoryParams = document.getElementById('params_category_byID');
	var objHidden = document.getElementById('selstring_byID');
	var s = '';
	
	objHidden.value = '';
	for (var i = 0; i <= objCategoryParams.options.length; i++) {
		s = s + objCategoryParams.options[i].value + '&&' + objCategoryParams.options[i].text + ';';
		alert(s);
	}
	objHidden.value = s;
}

function addParams() {
	var objAllParams = document.getElementById('all_params_byID');
	var objCategoryParams = document.getElementById('params_category_byID');
	var objNameParam = document.getElementById('new_params_byID');
	var objTypeParam = document.getElementById('type_new_params_byID');
	var b = true;
	
	if (objNameParam.value != '') {
		for (var i = 0; i < objCategoryParams.options.length; i++) {
			if (objCategoryParams.options[i].text == objNameParam.value) {	
				b = false;
				alert('Параметр уже существует и добавлен к данной категории');
			}
		}
		if (b == true) { //Если параметра нет в списке выбраных проверяем есть ли он в списке остальных параметров
			for (var i = 0; i < objAllParams.options.length; i++) {
				if (objAllParams.options[i].text == objNameParam.value) {
					b = false;
					objCategoryParams.options[objCategoryParams.options.length] = objAllParams.options[i];
					objAllParams.options[i] = null;
					alert('Параметр перенесен из списка всех параметров в спиок параметров для категори');
					objNameParam.value = '';
					selToString();
				}
			}
		}
		if (b == true) {
			objCategoryParams.options[objCategoryParams.options.length] = new Option(objNameParam.value, "000"+"&&"+objTypeParam.options[objTypeParam.selectedIndex].text);
			objNameParam.value = '';
			selToString();
		}
	}
}

function paramLeft() {
	var objAllParams = document.getElementById('all_params_byID');
	var objCategoryParams = document.getElementById('params_category_byID');
	
	objCategoryParams.options[objCategoryParams.options.length] = objAllParams.options[objAllParams.selectedIndex];
	objAllParams.options[objAllParams.selectedIndex] = null;
	selToString();
}

function paramRight() {
	var objAllParams = document.getElementById('all_params_byID');
	var objCategoryParams = document.getElementById('params_category_byID');
	
	objAllParams.options[objAllParams.options.length] = objCategoryParams.options[objCategoryParams.selectedIndex];
	objCategoryParams.options[objCategoryParams.selectedIndex] = null;
	selToString();
}

function allParamLeft() {
	var objAllParams = document.getElementById('all_params_byID');
	var objCategoryParams = document.getElementById('params_category_byID');
	var count = objAllParams.options.length;
	
	for (var i = 0; i <= count; i++) {
		objCategoryParams.options[objCategoryParams.options.length] = objAllParams.options[0];
	}
	objAllParams.options.length = 0;
	selToString();
}

function allParamRight() {
	var objAllParams = document.getElementById('all_params_byID');
	var objCategoryParams = document.getElementById('params_category_byID');
	var count = objCategoryParams.options.length;
	
	for (var i = 0; i < count; i++) {
		objAllParams.options[objAllParams.options.length] = objCategoryParams.options[0];
	}
	objCategoryParams.options.length = 0;
	selToString();
}
</script>
<input type="text" name="selstring" id="selstring_byID" value="none"><br>
<b>Параметры</b>&nbsp;<br>
<div style="clear: left;">
Новый параметр:&nbsp;
<input type="text" name="new_params" id="new_params_byID">&nbsp;
<select name="type_new_params" id="type_new_params_byID">
<option value="">Множественный выбор</option>
<option value="">Единственный выбор</option>
<option value="">Число</option>
<option value="">Строка</option>
</select>&nbsp;
<input type="button" value="Добавить" onClick="addParams();">
</div>
<br>
<div style="float: left;">&nbsp;Существующие параметры для данной категории<br>
<select size="7" name="params_category" id="params_category_byID">
</select>
</div>

<div align="center" style="float: left;"><br>
<input type="button" value="<--" onClick="allParamLeft();"><br>
<input type="button" value="<-" onClick="paramLeft();"><br>
<input type="button" value="->" onClick="paramRight();"><br>
<input type="button" value="-->" onClick="allParamRight();"><br>
</div>

<div style="float: left;">&nbsp;Остальные параметры<br>
&nbsp;<select size="7" id="all_params_byID">
</select>
</div>

Последний раз редактировалось Dexes; 01.02.2012 в 11:09.
Dexes вне форума Ответить с цитированием
Старый 01.02.2012, 10:57   #2
Dexes
Пользователь
 
Регистрация: 27.12.2011
Сообщений: 86
По умолчанию

Наидено решение: изменил функцию selToString
Код:
function selToString() {
	var objCategoryParams = document.getElementById('params_category_byID');
	var objHidden = document.getElementById('selstring_byID');
	var s = '';
	
	objHidden.value = '';
	for (var i = 0; i <= objCategoryParams.options.length - 1; i++) {
		objHidden.value = objHidden.value + objCategoryParams.options[i].value + '&&' + objCategoryParams.options[i].text + ';';
		//alert(s);
	}
	//objHidden.value = s;
}
Стало работать, но вопрос всё же актуален, почему такие баги?

Последний раз редактировалось Dexes; 01.02.2012 в 11:06.
Dexes вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процедура не вызывается Точьичка Общие вопросы Delphi 6 25.09.2011 17:52
EnumThreadWndProc не вызывается bro Win Api 4 16.04.2011 23:00
из тела проги не вызывается функция vimpel Общие вопросы C/C++ 2 29.03.2010 23:18
Функция не вызывается с другого Unita Seran4ek Общие вопросы Delphi 7 03.01.2010 18:55
не вызывается Paint в borland 5 primeplus Общие вопросы C/C++ 4 08.08.2009 08:14