Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.11.2010, 16:32
Аспирант
Отправить личное сообщение для Tchort Посмотреть профиль Найти все сообщения от Tchort
 
Регистрация: 02.03.2010
Сообщений: 32

Две функции с одинаковым названием
В одном файле есть две функции на JS.
<script type="text/javascript">
	function ChangeType(bType)
	{
		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 = '';

		if (bType.value != '')
		{
			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;
		}
	}
</script>

<script type="text/javascript">
	function ChangeType(Type)
	{
		document.getElementById('TR_BANNER').style.display = '';
		document.getElementById('TR_CONTEXT').style.display = '';
			
		if (Type.value == 'context' || Type.value == 'context2')
		{
			document.getElementById('TR_BANNER').style.display = 'none';
		}
		else
		{
			document.getElementById('TR_CONTEXT').style.display = 'none';
		}
	}
</script>


Если они обе в коде, работает только последняя. Как можно сделать чтобы имена у функций были однаковые но они работали? Вообще нужно как-то объеденить их, но вот как незнаю.
Пытался по разному. Совмещал тела функций в такой же последовательности, пытался извратиться с условиями.

Последний раз редактировалось Tchort, 24.11.2010 в 16:43.
Ответить с цитированием
  #2 (permalink)  
Старый 24.11.2010, 16:43
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Каким образом вы будете к ним обращаться, если у них будут одинаковые имена?
Ответить с цитированием
  #3 (permalink)  
Старый 24.11.2010, 16:44
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

1. В JS нет перегрузки функций.
2. Даже если бы была, в этом случае она бы не помогла. Вам нужна одна функция, в зависимости от переданных аргументов, делающая то, что нужно.
Ответить с цитированием
  #4 (permalink)  
Старый 24.11.2010, 16:50
Аспирант
Отправить личное сообщение для Tchort Посмотреть профиль Найти все сообщения от Tchort
 
Регистрация: 02.03.2010
Сообщений: 32


Ну факт в том что необходимо именно такое название функции. И как быть в таком случае я сам незнаю.
Ответить с цитированием
  #5 (permalink)  
Старый 24.11.2010, 16:58
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Какое поведение вы хотите от этих двух функций с одинаковыми именами? Вот есть две функции с именем test. Я вызываю test(). Что происходит? Какая функция вызывается?

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

никак.напиши свой адрес и на двери у соседей и сделай так чтобы вам одно письмо одновременно приносили и оставляли))))Да переиминуй вторую. тем более они у тебя не пересекаются . тот вариант толи лыжи толи я....сам то хоть понимаеш чего от этого всего хош?)

Последний раз редактировалось dmitriymar, 24.11.2010 в 17:16.
Ответить с цитированием
  #7 (permalink)  
Старый 24.11.2010, 21:26
Кандидат Javascript-наук
Отправить личное сообщение для `p r o x y Посмотреть профиль Найти все сообщения от `p r o x y
 
Регистрация: 04.05.2009
Сообщений: 105

Вариант один - объеденить функции. Пример:
function ChangeType(bType){
   if (bType > 1 && bType < 20){
      // код первой функции
   }else{
      // код второй функции
   }
}
Ответить с цитированием
  #8 (permalink)  
Старый 25.11.2010, 11:02
Аспирант
Отправить личное сообщение для Tchort Посмотреть профиль Найти все сообщения от Tchort
 
Регистрация: 02.03.2010
Сообщений: 32

Kolyaj,
Обе функции нужны для селекта. Вот тут:
<select name="TYPE" class="input-select" onchange="ChangeType(this);">
				<option value=""></option>
				<?foreach ($arResult["TYPES"] as $sid => $arType):?>
				<option value="<?= $sid?>"<?if ($arResult["TYPE"]==$sid){?> selected="selected"<?}?>><?= $arType["NAME"]?></option>
				<?endforeach;?>
			</select>


И в зависимости от выбранного селекта первая функция выводит мин.цены, а вторая убирает или открывает новые ячейки.

Последний раз редактировалось Tchort, 25.11.2010 в 11:04.
Ответить с цитированием
  #9 (permalink)  
Старый 25.11.2010, 11:06
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Почему их должно быть именно две? Почему их нельзя объединить? Почему их нельзя назвать разными именами и вызывать по-очереди?
Ответить с цитированием
  #10 (permalink)  
Старый 25.11.2010, 11:09
Аспирант
Отправить личное сообщение для Tchort Посмотреть профиль Найти все сообщения от Tchort
 
Регистрация: 02.03.2010
Сообщений: 32

Сообщение от Kolyaj Посмотреть сообщение
Почему их должно быть именно две? Почему их нельзя объединить? Почему их нельзя назвать разными именами и вызывать по-очереди?
Вот не знаю как их объединить.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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