Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 25.11.2010, 11:32
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

не просматривал я код-да и спать хочу. но если ты передаёш в функцию разнопланое параметры и от их типа условно выбираеш нужную функцию-то объедени всё в одну,а в функцию передавай два параметра-и сделай проверку -какой именно предаётся. и в зависимости от того какой поереданный вызывай нужное действие код не хочу расписывать. напишу алгоритм
функция (а,б)
{
если а присутствует действие 1
если б присутсвует действие 2
если а и б присутствуют то действия 1 и 2
если пустые оба то действия какието
}
ну при условии что знееш что какихто условий нет то опустиш некотые пункты.
п.с если параметр не пердаётся в функцию его тип ундефинит
Ответить с цитированием
  #12 (permalink)  
Старый 25.11.2010, 11:40
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

да в принципе можешь и один параметр если он разнотиповый-только проверяй его тип
Ответить с цитированием
  #13 (permalink)  
Старый 25.11.2010, 12:41
Аспирант
Отправить личное сообщение для Tchort Посмотреть профиль Найти все сообщения от Tchort
 
Регистрация: 02.03.2010
Сообщений: 32

Попробовал сделать так:
function ChangeType(bType,Type)
	{
		var min_cost_1000 = new Array();
		var min_cost_click = new Array();
		var text_min_cost = '<?= GetMessage("ADVNET_MIN_COST")?>: ';
		var curr_min_cost = '<?= str_replace("#", "", $arResult["CURRENCY"]["FORMAT_STRING"])?>';

		<?foreach ($arResult["TYPES"] as $sid => $arType):?>
		min_cost_1000['<?= $sid?>'] = '<?= number_format($arType["COST_1000"], 2)?>';
		min_cost_click['<?= $sid?>'] = '<?= number_format($arType["COST_CLICK"], 2)?>';
		<?endforeach;?>

		document.getElementById('COST_PER_1000_MIN').innerHTML = '';
		document.getElementById('COST_PER_CLICK_MIN').innerHTML = '';
			
		document.getElementById('TR_BANNER').style.display = '';
		document.getElementById('TR_CONTEXT').style.display = '';

		if (bType.value != '' && Type.value == 'context' || Type.value == 'context2')
		{
			document.getElementById('COST_PER_1000_MIN').innerHTML = text_min_cost + min_cost_1000[bType.value] + curr_min_cost;
			document.getElementById('COST_PER_CLICK_MIN').innerHTML = text_min_cost + min_cost_click[bType.value] + curr_min_cost;
				
			document.getElementById('TR_BANNER').style.display = 'none';
		}
		
		if (bType.value != '' && Type.value != 'context' || Type.value != 'context2')
		{
			document.getElementById('COST_PER_1000_MIN').innerHTML = text_min_cost + min_cost_1000[bType.value] + curr_min_cost;
			document.getElementById('COST_PER_CLICK_MIN').innerHTML = text_min_cost + min_cost_click[bType.value] + curr_min_cost;
				
			document.getElementById('TR_CONTEXT').style.display = 'none';
		}
	}

Но к сожалению не увенчалось успехом
Ответить с цитированием
  #14 (permalink)  
Старый 25.11.2010, 12:53
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

не хочу смотреть код. но ошибка видна сразу основная. в ветвлениях не bType.value а просто bType. а то что ты написал-в с++ и подобных-ты создал новый класс. нобелевскую премию тебе
это тебе по типам переменных http://javascript.ru/typeof
а это по работе с функциями http://javascript.ru/Function
Ответить с цитированием
  #15 (permalink)  
Старый 25.11.2010, 12:58
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

да и ветвление у тебя тройное в условии-хоть скобки расставь-слышал когда нибудь о приоритете?)и как он может выделываться иногда?
Ответить с цитированием
  #16 (permalink)  
Старый 25.11.2010, 13:08
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Ди и проработай условия лучше-сначала определи переданна ли переменная -определи её тип если не равна ундефенит именно тип-начинай работать с её значениями. сначала ТИПЫ потом ЗНАЧЕНЯ!!
if (typeof bType !="undefined"){ проверка на значения и действия }
if (typeof Type !="undefined"){ проверка на значения и действия }
if ((typeof Type !="undefined")&&(typeof Typeb !="undefined")){ проверка на значения и действия }
Ответить с цитированием
  #17 (permalink)  
Старый 25.11.2010, 13:42
Аспирант
Отправить личное сообщение для Tchort Посмотреть профиль Найти все сообщения от Tchort
 
Регистрация: 02.03.2010
Сообщений: 32

Сообщение от dmitriymar Посмотреть сообщение
Ди и проработай условия лучше-сначала определи переданна ли переменная -определи её тип если не равна ундефенит именно тип-начинай работать с её значениями. сначала ТИПЫ потом ЗНАЧЕНЯ!!
if (typeof bType !="undefined"){ проверка на значения и действия }
if (typeof Type !="undefined"){ проверка на значения и действия }
if ((typeof Type !="undefined")&&(typeof Typeb !="undefined")){ проверка на значения и действия }
Типы известны, проверка не нужна. На счет приоритетов не знал, но функцию объеденить не могу всеравно. По отдельности они обе работают как нужно, а объединить незнаю как.
Ответить с цитированием
  #18 (permalink)  
Старый 25.11.2010, 13:45
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

если одно из значений не переадаётся в функцию -то значение этой переменной ундефинит!!! убери ошибки логики у себя-распиши свой алгоритм для себя на бумаге-пропиши словами условия и всё поймёш. Я тебе написал как уже и не один раз а то что не работает это твои ошибки логики синтаксиса и т.д

Последний раз редактировалось dmitriymar, 25.11.2010 в 13:47.
Ответить с цитированием
  #19 (permalink)  
Старый 25.11.2010, 13:46
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

особенность скрипта-менять типы предопределённых перменных в зависимости от переданных данных
Ответить с цитированием
  #20 (permalink)  
Старый 25.11.2010, 13:51
Кандидат Javascript-наук
Отправить личное сообщение для `p r o x y Посмотреть профиль Найти все сообщения от `p r o x y
 
Регистрация: 04.05.2009
Сообщений: 105

умм...не увидел второй страницы ))
Если просто определить с какого select запрос, то:

<select name="minPrice" class="input-select" onchange="ChangeType(this)">
	<option value="11">name 11</option>
	<option value="12">name 12</option>
</select>

<select name="showHideCell" class="input-select" onchange="ChangeType(this)">
	<option value="21">name 21</option>
	<option value="22">name 22</option>
</select>


<script type="text/javascript">
function ChangeType(o){
	alert('Select name: '+o.name+'\n'+'op text: '+o.options[o.selectedIndex].innerHTML+'\n'+'op value: '+o.options[o.selectedIndex].value);
	if (o.name == 'minPrice'){
		alert('select 1');
		// код 1 функции
	}else{
		alert('select 2');
		// код 2 функции
	}
}
</script>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
arguments вызвавшей функции mister_maxim Общие вопросы Javascript 4 12.10.2010 16:21
Переменная как значение функции. Jurasmi Общие вопросы Javascript 7 22.04.2010 12:45
Подскажите, как работает простой код (замыкание функции)? Dotod Общие вопросы Javascript 5 02.12.2009 04:03
Возвращение значения из функции dba Events/DOM/Window 21 06.10.2009 01:33
владелец функции diagnost Общие вопросы Javascript 6 30.10.2008 15:04