Перейти к содержимому


Пользователь месяца
Ixman Ixman 1-й за Октябрь
Очков активности: 693 0 тем, 33 сообщения, 14 баллов репутации
Сайт: o5cat.ru
ТОП самых активных за этот месяц
  • Фотография ShowPrint
    #1

    ShowPrint (ShowPrint.ru)
    Очков активности: 96 Вне конкурса за определение пользователя месяца

  • Фотография yuran
    #2

    yuran (yurbol.ru)
    Очков активности: 81 0 тем, 54 сообщения, 1 балл репутации

  • Фотография Ixman
    #3

    Ixman (o5cat.ru)
    Очков активности: 67.5 Вне конкурса за определение пользователя месяца

  • Фотография BLIK
    #4

    BLIK
    Очков активности: 51 Вне конкурса за определение пользователя месяца

  • Фотография Mandarin
    #5

    Mandarin
    Очков активности: 42 0 тем, 28 сообщений, 1 балл репутации

  • Фотография WGN
    #6

    WGN (worldgamenews.com)
    Очков активности: 39 Вне конкурса за определение пользователя месяца

  • Фотография pozitron123
    #7

    pozitron123
    Очков активности: 31.5 2 темы, 15 сообщений, 1 балл репутации

  • Фотография алексс
    #8

    алексс
    Очков активности: 27 2 темы, 12 сообщений, 1 балл репутации

  • Фотография Mariko
    #9

    Mariko
    Очков активности: 16.5 1 тема, 8 сообщений, 1 балл репутации

  • Фотография RosenRot
    #10

    RosenRot (abuzov.com)
    Очков активности: 13.5 1 тема, 6 сообщений, 1 балл репутации

  • Показать весь ТОП 10
Поддержите форум! =)
Апдейты
  • Яндекс ИКС: 31.10.2018
  • Яндекс выдача: 15.11.2018
Топ 5 участников по репутации


Помогите с Mootools

#1 Вячеслав

Вячеслав
  • Пользователь
  • 381 сообщений
  • Репутация: 2
0

Отправлено 18 September 2009 - 15:50

Пивет, помогите разобратся, не пойму в чем дело почему не работаю словия IF ELSE???
По отдельности (каждый участок кода в if{} или else{}, сам код правильно работает) скрипт срабатывает, но если все как ниже, то срабатывает только первое (if{...}), else{...} при этом не выполняетс вообще!!! Не могу понять где я там неправ помогите, оч надо....

<script type="text/javascript">
window.addEvent('domready', function() {
  $$('div.buttonheading').setProperty('id', 'create');
  $$('p.buttonheading').setProperty('id', 'P_inject');
	var Array_a = $ES('a','P_inject');
	var Array_span = $ES('span','create');
	 if(Array_a !=''){
			var Link = new Element('a', {
				'class' : 'My_link',
				'rel' : 'nofollow',
				'href' : '#',
				'events' : {
					'click': function(){
						window.open('http://<?php echo $self_host; ?>/index.php?option=com_pdf2email&view=pdf2email&id=<?php echo $self_id;?>&tmpl=component','win2','width=435,height=480,menubar=yes,resizable=yes'); return false;
					 }
				 }
			});
			Link.injectInside($('P_inject'));
			$$('a.My_link').setProperty('id', 'IMG_inject');
			 var IMG = new Element('img',{
				'alt' : 'pdf2email',
				'src' : 'images/M_images/emailButton.png'
			});
			IMG.injectInside($('IMG_inject'));
	 }
	 //_________________________________________________________________________//
	else //if (Array_span !='')
	{
		//We create a new element and the class is appropriated to it
		var Span = new Element('span', {
			   'class': 'mySpan'
		});
		//We insert a new element into the object
		//necessary to us, with appropriated to it early the identifier
		Span.injectInside($('create'));
		//We receive earlier created object on the class appropriated to it
		$$('.mySpan').setProperty('id', 'newSpan');
		//We create a new element and it is appropriated to it necessary properties and attributes
		var Link = new Element('a', {
	   'styles': {
			   'display': 'block',
			   'height':'14px',
			   'width':'14px',
			   'border':'0 none',
			   'float':'right',
			   'margin':'6px 5px 0 0',
			   'background':'url(images/M_images/emailButton.png)'
	   },
	   'class': 'myLink',
	   'href': '#',
	  'events': {
			   'click': function(){
				  window.open('http://<?php echo $self_host; ?>/index.php?option=com_pdf2email&view=pdf2email&id=<?php echo $self_id;?>&tmpl=component','win2','width=435,height=480,menubar=yes,resizable=yes'); return false;
				}
	   }
	  });
		//We insert it is new the created element in a pregoing element
		Link.injectInside($('newSpan'));
	}
});
</script>

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Неактивные
  • 5148 сообщений
  • Репутация: 8

Отправлено 18 September 2009 - 20:10

Вячеслав,
if( Array_a != '' )
Замени на
if( Array_a.length > 0 )

А вообще ты как всегда извращаешься.
  • 0

#3 Вячеслав

Вячеслав
    Topic Starter
  • Пользователь
  • 381 сообщений
  • Репутация: 2

Отправлено 19 September 2009 - 01:09

То что извращаюсь согласен :) , но надож както учится, я просто еще незнаю всех "блатных" слов языка, и поэтому пытаюсь решить задачу "словами младенца" :) ...

Изменил код все заработало:
<script type="text/javascript">
function Create_Link(){
		var Link = new Element('a', {
				'class' : 'My_link',
				'rel' : 'nofollow',
				'href' : '#',
				'events' : {
					'click': function(){
						window.open('http://<?php echo $self_host; ?>/index.php?option=com_pdf2email&view=pdf2email&id=<?php echo $self_id;?>&tmpl=component','win2','width=435,height=480,menubar=yes,resizable=yes'); return false;
					 }
				 }
		 });
		 return (Link);
}
function Create_IMG(){
		var IMG = new Element('img',{
				'alt' : 'pdf2email',
				'src' : 'images/M_images/emailButton.png'
			});
			return (IMG);
}
window.addEvent('domready', function() {
  $$('div.buttonheading').setProperty('id', 'create');
  $$('p.buttonheading').setProperty('id', 'P_inject');
	var Array_span = $$('div.buttonheading');
	var Array_table = $$('table.contentpaneopen');
  if(Array_span.length > 0){
	   var Span = new Element('span', {
			   'class': 'mySpan'
		});
		//We insert a new element into the object
		//necessary to us, with appropriated to it early the identifier
		Span.injectInside($('create'));
		//We receive earlier created object on the class appropriated to it
		$$('.mySpan').setProperty('id', 'newSpan');
		//We create a new element and it is appropriated to it necessary properties and attributes
		var Link = new Element('a', {
	   'styles': {
			   'display': 'block',
			   'height':'14px',
			   'width':'14px',
			   'border':'0 none',
			   'float':'right',
			   'margin':'6px 5px 0 0',
			   'background':'url(images/M_images/emailButton.png)'
	   },
	   'class': 'myLink',
	   'href': '#',
	  'events': {
			   'click': function(){
				  window.open('http://<?php echo $self_host; ?>/index.php?option=com_pdf2email&view=pdf2email&id=<?php echo $self_id;?>&tmpl=component','win2','width=435,height=480,menubar=yes,resizable=yes'); return false;
				}
	   }
	  });
		Link.injectInside($('newSpan'));
}
//_______________________________________________________________________________
else{
	if(Array_table.length > 0){
		Array_table[0].setProperty('id', 'Tab_modify');
		//$$('table.contentpaneopen').setProperty('id', 'Tab_modify');
		$E('tbody', 'Tab_modify').setProperty('id', 'TB_modify');
		$E('tr', 'TB_modify').setProperty('id', 'TR_modify');
		var TD = new Element('td', {
					'class' : 'buttonheading',
					'align' : 'right',
					'width' : '100%'
		});
		TD.injectInside($('TR_modify'));
		var Array_Td = $ES('td', 'TR_modify');
		Array_Td[4].setProperty('id', 'Td_modify');
		var Link = Create_link();
		Link.injectInside('Td_modify');
		$$('a.My_link').setProperty('id', 'IMG_inject');
		var IMG = Create_IMG();
		IMG.injectInside($('IMG_inject'));
	}
	else{
			var Link = new Element('a', {
				'class' : 'My_link',
				'rel' : 'nofollow',
				'href' : '#',
				'events' : {
					'click': function(){
						window.open('http://<?php echo $self_host; ?>/index.php?option=com_pdf2email&view=pdf2email&id=<?php echo $self_id;?>&tmpl=component','win2','width=435,height=480,menubar=yes,resizable=yes'); return false;
					 }
				 }
			});
			Link.injectInside($('P_inject'));
			$$('a.My_link').setProperty('id', 'IMG_inject');
			 var IMG = new Element('img',{
				'alt' : 'pdf2email',
				'src' : 'images/M_images/emailButton.png'
			});
		   IMG.injectInside($('IMG_inject'));
   }
}
});
</script>

Код получился огромным и хочется его сократить, хотябы убрать дублирование обьявления одинаковых переменных (var Link; var IMG), я хочу это сделать таким путем:
1)Создаю две функции в теле которых создаются переменные, в одной Link в другой IMG, функции возвращают значения return(Link) и return(Img)

Вот эти функции:

function Create_Link(){
		var Link = new Element('a', {
				'class' : 'My_link',
				'rel' : 'nofollow',
				'href' : '#',
				'events' : {
					'click': function(){
						window.open('http://<?php echo $self_host; ?>/index.php?option=com_pdf2email&view=pdf2email&id=<?php echo $self_id;?>&tmpl=component','win2','width=435,height=480,menubar=yes,resizable=yes'); return false;
					 }
				 }
		 });
		 return (Link);
}
function Create_IMG(){
		var IMG = new Element('img',{
				'alt' : 'pdf2email',
				'src' : 'images/M_images/emailButton.png'
			});
			return (IMG);
}

2)А затем хочу, уже в теле следующей функции:
window.addEvent('domready', function() {...}
Вызывать эти функции в нужных участках.
Пишу вот так:
var Link = Create_Link();
Ничего не вызывается, подскажите как вызвать функцию, искал в сети так толком ничего и не нашел рабочего примера.
  • 0

#4 ZiTosS

ZiTosS
  • Неактивные
  • 5148 сообщений
  • Репутация: 8

Отправлено 19 September 2009 - 09:18

Вячеслав, кто сказал что ничего не вызывается. Мне кажется просто ничего не возвращается. Я отлаживая код использую alert(). Если переменная не определена он выведет undefined.
А так могу кзать, что скорее всего функция возвращает левую копию, с которой нельзя работать, а не сам объект.
  • 0



Похожие темы

  Название темы Автор Статистика Последнее сообщение

Оформление форума – IPBSkins.ru