<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Уроки PHP, Mootools, JavaScript, ActionScript, HTML, CSS &#187; Mootools</title>
	<atom:link href="http://php.infoniac.ru/category/mootools/feed/" rel="self" type="application/rss+xml" />
	<link>http://php.infoniac.ru</link>
	<description>Уроки программирования от новичка новичкам</description>
	<lastBuildDate>Tue, 20 Mar 2012 18:36:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Исключаем конфликты между Mootools и jQuery</title>
		<link>http://php.infoniac.ru/iskliuchaem-konflikty-mezhdu-mootools-i-jquery.html</link>
		<comments>http://php.infoniac.ru/iskliuchaem-konflikty-mezhdu-mootools-i-jquery.html#comments</comments>
		<pubDate>Tue, 20 Mar 2012 18:36:33 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Разное]]></category>
		<category><![CDATA[no conflict]]></category>
		<category><![CDATA[несколько библиотек]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=1163</guid>
		<description><![CDATA[Недавняя переписка с одним из моих читателей моего блога подсказала мне, что может пригодится пост, как мне, так и всем остальным, о том, как избежать конфликтного кода при использовании нескольких популярных Javascript библиотек.]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><div style="text-align:center;width:100%;margin:10px 0px 10px 0px;"><div style="margin:auto;"><script type="text/javascript"><!--
google_ad_client = "pub-8205915997794532";
/* 728x90, создано 08.12.10 */
google_ad_slot = "3730215141";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div></div><div style="width:100%;min-width:100%;"><p>Итак, предположим, что вы задумали НЕЧТО и по мере того, как проект (или НЕЧТО) развивается вы понимаете, что тут пригодилась бы вторая хорошая библиотека Javascript, т.е. jQuery или же Mootools. Однако, нам, как уже опытным программистам, известно, что как jQuery, так и Mootools и Prototype используют знак доллара (<em>$</em>) в качестве основной рабочей лошадки и перед нами становится задача избежать конфликтных ситуаций при выполнении кода, т.е. подсказывать клиентскому обработчику Javascript какую библиотеку нужно подключать при выполнении того или иного кода, ведь <code>$('element')</code>, например, в Mootools выберет элемент с id=&#8221;element&#8221;, а в jQuery просто тег ELEMENT. Итак <strong>РЕШЕНИЯ</strong>:</p>
<h2>Безконфликтный код jQuery</h2>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">     jQuery.<span style="color: #660066;">noConflict</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>     
     <span style="color: #006600; font-style: italic;">// код jQuery можно выполнять через селектор jQuery(...)</span>
     jQuery<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
       jQuery<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;div&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">hide</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//спрятать все блоки DIV</span>
     <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     <span style="color: #006600; font-style: italic;">// код Mootools используем как обычно, через $.</span>
     $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'idElement'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">hide</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//спрятать элемент с ID=idElement</span></pre></div></div>

<p>Однако, есть ещё и другой вариант, который позволяет работать с двумя библиотеками, но оставлять право использовать селектор &#8220;знак доллара&#8221; для jQuery:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">jQuery.<span style="color: #660066;">noConflict</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #006600; font-style: italic;">//сюда вставляется обычный код jQuery</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>jQuery<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Узнаете <a href="http://php.infoniac.ru/auto-executable-functions-javascript.html" title="Самовыполняющиеся функции JavaScript">самовыполняющиеся функции</a>, которые мы также использовали для <a href="http://php.infoniac.ru/javascript-zakladki.html" title="Создаем интерактивные закладки JavaScript">создания интерактивных закладок</a>?</p>
<h2>Бесконфликтный код Mootools</h2>
<p>Тут тоже довольно просто! Если помимо Mootools планируется использование других JavaScript библиотек нужно вместо обычного селектора $ (знак доллара), нужно использовать <strong>document.id()</strong>, а зато селектор $$ можно использоваь и так, потому что это специальный селектор, свойственный только библиотеке Mootools.</p>
</div><!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/iskliuchaem-konflikty-mezhdu-mootools-i-jquery.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Создание собственных классов в Mootools &#8211; Урок 18 &#8211; Часть первая</title>
		<link>http://php.infoniac.ru/klassy-mootools-urok18-chast1.html</link>
		<comments>http://php.infoniac.ru/klassy-mootools-urok18-chast1.html#comments</comments>
		<pubDate>Thu, 24 Nov 2011 16:12:51 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Разное]]></category>
		<category><![CDATA[Уроки новичка]]></category>
		<category><![CDATA[классы]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=1110</guid>
		<description><![CDATA[Доходим до самих программистских штук в программировании: классы и абстрактные объекты. Если овладеть этим предметом, то можно смело начинать творить свои проекты, т.к. классы незаменимы, когда речь доходит до сложных задач. Читаем урок, соатвляем отзывы.]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Сегодня попробую рассказать об одном из самых сложных для меня предметов в программировании &#8211; о <strong>КЛАССАХ</strong>. Этот страшный КЛАСС &#8211; это некий контейнер, некое собрание переменных и функций, которые обрабатывают ранее упомянутые переменные, чтобы получить определённый результат. Классы очень полезны при работе над более сложными проектами.</p>
<h3>Переменные</h3>
<p>Мы уже говорили об использовании хеш-массивов, так что пример ниже не должен никому показаться сложным.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #006600; font-style: italic;">//Создаем новый класс с именем Klass_first</span>
	<span style="color: #006600; font-style: italic;">//класс содержит две внутренние переменные</span>
	<span style="color: #003366; font-weight: bold;">var</span> Klass_first <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
		variable_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Я первая переменная&quot;</span><span style="color: #339933;">,</span>
		variable_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Я вторая переменная&quot;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Как и при работе с хеш-массивами, получить доступ к переменным в классе довольно просто. В примере ниже обратите внимание, что нужно создать экземпляр нового класса.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> run_demo_one <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//создадим объект на основне нашего класса Klass_first</span>
	<span style="color: #003366; font-weight: bold;">var</span> demo_1 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Klass_first<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">//Отобразить переменные нашего класса</span>
	<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>demo_1.<span style="color: #660066;">variable_one</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>demo_1.<span style="color: #660066;">variable_two</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><span id="demo_1" class="pseudobutton">Запуск первой демки</span></p>
<h3>Методы и функции</h3>
<p><strong>Методы</strong> &#8211; это, по существу, обычные функции, но, которые принадлежат определённому классу. Эти методы нужно вызывать исключительно из созданного ранее экземпляра класса. Методы классов опредеояются также, как и обычные переменные, за исключением того, что методу задается статическое значение и передается анонимная функция:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">var</span> Klass_second <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
		variable_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Вот значение первой переменной&quot;</span><span style="color: #339933;">,</span>
		variable_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Вот значение второй переменной&quot;</span><span style="color: #339933;">,</span>
		function_one <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Значение первой переменной : '</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">variable_one</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
		function_two <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Значение второй переменной : '</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">variable_two</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Обратите внимание на использование ключевого слова <strong>this</strong>. По причине того, что все переменные работают во внутренней среде класса, получать доступ к знчению этих переменных можно только используя слово <strong>this</strong>, иначе результат работы метода будет значение <strong>undefined</strong>.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #006600; font-style: italic;">//работает</span>
	working_method <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Первое значение : '</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">variable_one</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	<span style="color: #006600; font-style: italic;">//не работает</span>
	broken_method <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Второе значение : '</span> <span style="color: #339933;">+</span> variable_two<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Вызов методов нового класса работает также, как и вызов переменных класса.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">var</span> run_demo_2 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">//создаем экземпляр класса Klass_second</span>
		<span style="color: #003366; font-weight: bold;">var</span> demo_2 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Klass_second<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #006600; font-style: italic;">//вызываем функцию function_one</span>
		demo_2.<span style="color: #660066;">function_one</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #006600; font-style: italic;">//вызываем функцию function_two</span>
		demo_2.<span style="color: #660066;">function_two</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span></pre></div></div>

<p><span id="demo_2" class="pseudobutton">Запуск второй демки</span></p>
<h3>Метод initialize:</h3>
<p>Метод <strong>initialize:</strong> &#8211; это специальная функция класса, в которую можно сбросить все действия и параметры по настройке класса и определённые пользовательские опции и переменные. <strong>initialize:</strong> определяется также, как и обычные методы классов:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> Myclass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//определяем функцию инициализации класса с одним параметром</span>
	initialize <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>user_input<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">//создаем переменную для этого класса, чьим значением</span>
		<span style="color: #006600; font-style: italic;">//будут пользовательские данные</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">value</span> <span style="color: #339933;">=</span> user_input<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span></pre></div></div>

<p><strong>initialize:</strong> можно использовать для изменения других опций или параметров:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> Myclass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	initialize <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>true_false_value<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>true_false_value<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">message</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Всё, что говориться в этом уроке - правдиво!&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">message</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Всё, что говориться в этом уроке - лживо!&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//Этот экземпляр класса скажет, что</span>
<span style="color: #006600; font-style: italic;">//&quot;Всё, что говориться в этом уроке - правдиво!&quot;</span>
<span style="color: #003366; font-weight: bold;">var</span> myclass_instance <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Myclass<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//Этот экземпляр класса скажет, что</span>
<span style="color: #006600; font-style: italic;">//&quot;Всё, что говориться в этом уроке - лживо!&quot;</span>
<span style="color: #003366; font-weight: bold;">var</span> myclass_instance <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Myclass<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Такой принцип определения экземпляра класса работает и в других случаях, только нужно помнить о запятых между каждой парой {ключа/значения}. Эту злосчастную запятую очень легко пропустить и продатить по безобразия много времени в поисках несуществующих багов в коде.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> Klass_third <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//запуск функции при определении экземпляра класса</span>
	initialize <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>one<span style="color: #339933;">,</span> two<span style="color: #339933;">,</span> true_false_option<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">variable_one</span> <span style="color: #339933;">=</span> one<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">variable_two</span> <span style="color: #339933;">=</span> two<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>true_false_option<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">boolean_option</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Выбрана опция TRUE&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">boolean_option</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;Выбрана опция FALSE&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	<span style="color: #006600; font-style: italic;">//определения методов</span>
	function_one <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Значение первое: '</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">variable_one</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	function_two <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Значение второе: '</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">variable_two</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> run_demo_3 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> demo_3 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Class_three<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Значение для первой переменной&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;Значение для второй переменной&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_3.<span style="color: #660066;">function_one</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_3.<span style="color: #660066;">function_two</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><span id="demo_3" class="pseudobutton">Запуск третей демки</span></p>
<h3>Внедрение параметров</h3>
<p>При создании классов, часто необходимо задать некоторым переменным значения по умолчанию, чтобы, если пользователь не задает никаких значений, классу было бы с чем работать. Это можно сделать вручную, указав необходимые значения в функции инициализации и далее, проверяя кажду переменную на предмет того, было ей передано значение или нет и заменяя дефолтные значения, при необходимости. Но, можно просто подключить класс Options, который входит в состав модуля Mootools Class.extras.</p>
<p>Добавить функционал опций своему классу также просто, как добавить ещё одну пару ключ/значение к опциям инициализации:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">var</span> Myclass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	Implements<span style="color: #339933;">:</span> Options
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span></pre></div></div>

<p>По поводу <strong>Implements</strong> особо пока заморачиваться не будем, но более подробно остановимся на нём в следующих уроках. А сейчас, когда мы подключили функционал Options, нужно определить дефолтные значения параметров. Как и всегда, нужно всего-лишь добавить ещё одну пару ключ/значение в опции инициализации класса, но этот хеш-массив уже будет вложенным:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">var</span> Myclass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	Implements<span style="color: #339933;">:</span> Options<span style="color: #339933;">,</span>
	options<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
		option_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Значение первого параметра&quot;</span><span style="color: #339933;">,</span>
		option_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Значение второго параметра&quot;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Итак, значения по умолчанию установлены, только теперь нужен способ перезаписи этих значений пользователем при создании экземпляра класса и этот способ заключается в добавлении всего нескольких строчек кода. Об остальном заботится класс Options.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">var</span> Myclass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	Implements<span style="color: #339933;">:</span> Options<span style="color: #339933;">,</span>
	options<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
		option_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Дефолтное значение первого параметра&quot;</span><span style="color: #339933;">,</span>
		option_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Дефолтное значение второго параметра&quot;</span>
	<span style="color: #009900;">&#125;</span>
	initialize<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>options<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">setOptions</span><span style="color: #009900;">&#40;</span>options<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Итак, после того, как все эти действия выполнены, перезаписать эти значения не сложнее, чем добавить ещё одну пару ключ/значение.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//Перезаписываем оба дефолтных значения</span>
<span style="color: #003366; font-weight: bold;">var</span> class_instance <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Myclass<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	options_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Перезаписываем первое дефолтное значение&quot;</span><span style="color: #339933;">,</span>
	options_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Перезаписываем второе дефолтное значение&quot;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//Перезаписываем только одно дефолтное значение</span>
<span style="color: #003366; font-weight: bold;">var</span> class_instance <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Myclass<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	options_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Перезаписываем второе дефолтное значение&quot;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Обратите внимание на использование метода <strong>setOptions</strong>, который вызывается в методе инициализации. Этот метод &#8211; это часть класса Options и он также позволяет устанавливать опции (параметры) после того, как был создан экземпляр класса.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">var</span> class_instance <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Myclass<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">//Устанавливаем первый параметр</span>
	class_instance.<span style="color: #660066;">setOptions</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>options_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Перезаписать первый параметр&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>После того, как опци (параметры) были установлены, к ним можно обращаться через переменную <strong>options</strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">var</span> class_instance <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Myclass<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">//Обращаемся к значению первого параметра</span>
	<span style="color: #003366; font-weight: bold;">var</span> class_option <span style="color: #339933;">=</span> class_instance.<span style="color: #660066;">options</span>.<span style="color: #660066;">options_one</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">//переменная class_option теперь имеет значение &quot;Дефолтное значение первого параметра&quot;</span></pre></div></div>

<p>Если же нужно обратиться к переменной изнутри класса, нельзя забывать про <strong>this</strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">var</span> Myclass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	Implements<span style="color: #339933;">:</span> Options<span style="color: #339933;">,</span>
	options<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
		option_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Первое дефолтное значение&quot;</span><span style="color: #339933;">,</span>
		option_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Второе дефолтное значение&quot;</span>
	<span style="color: #009900;">&#125;</span>
	test <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">//обратите внимание на использование this</span>
		<span style="color: #006600; font-style: italic;">//для обращения к классу</span>
		<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">option_two</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> class_instance <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Myclass<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">//Следующая строчка выведет сообщение &quot;Второе дефолтное значение&quot;</span>
class_instance.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Ну, а если всё вышеперечисленное соединить в один код, получится следующее:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> Klass_fourth <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
    Implements<span style="color: #339933;">:</span> Options<span style="color: #339933;">,</span>
	options<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
		option_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Дефолтное значение Первого Параметра&quot;</span><span style="color: #339933;">,</span>
		option_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Дефолтное значение Второго Параметра&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	initialize<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>options<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">setOptions</span><span style="color: #009900;">&#40;</span>options<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	show_options <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">//тут мы используем функцию print_r(), позаимсвованную из PHP</span>
		<span style="color: #006600; font-style: italic;">//немного о ней будет сказано чуть ниже</span>
		<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>print_r<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> run_demo_4 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> demo_4 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Klass_fourth<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
		option_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Новое значение первого параметра&quot;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_4.<span style="color: #660066;">show_options</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> run_demo_5 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> demo_5 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Klass_fourth<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_5.<span style="color: #660066;">show_options</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_5.<span style="color: #660066;">setOptions</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>option_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Новое значение второго параметра&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_5.<span style="color: #660066;">show_options</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//Создадим новый экземпляр класса Klass_fourth</span>
<span style="color: #006600; font-style: italic;">//в который добавим новый параметр - new_option</span>
<span style="color: #003366; font-weight: bold;">var</span> run_demo_6 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> demo_6 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Klass_fourth<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>new_option <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Это значение нового, добавленного параметра&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_6.<span style="color: #660066;">show_options</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><span id="demo_4" class="pseudobutton">Запуск четвертой демки</span><br />
<span id="demo_5" class="pseudobutton">Запуск пятой демки</span><br />
<span id="demo_6" class="pseudobutton">Запуск шестой демки</span></p>
<h3>Вкусняшки!</h3>
<p>Наверняка многие знакомы с функцией <strong>print_r()</strong> из <a href="/category/php">PHP</a>, которая используется в методе show_options:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">   	show_options <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   		<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>print_r<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   	<span style="color: #009900;">&#125;</span></pre></div></div>

<p><strong>print_r()</strong> &#8211; это не родная функция JavaScript, но она была ассимилирована в рамках проекта PHP2JS. Ну, а для тех, кто не знает, что такое PHP, объясню, что функция print_r() возвращает форматированную строку, созданную из пар ключ/значение. Это очень полезная функция для поиска и исправления ошибок. Кому интересен искодный код этой функции можно её найти в исходном коде страницы. Надеюсь все знают, как найти исходный код страницы? Подсказка.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> Klass_fifth <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//Подключаем класс Options</span>
	Implements<span style="color: #339933;">:</span> Options<span style="color: #339933;">,</span>
	<span style="color: #006600; font-style: italic;">//Устанавливаем дефолтные опции</span>
	options <span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
		option_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Дефолтное значение первого параметра пятого класса&quot;</span><span style="color: #339933;">,</span>
		option_two <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Дефолтное значение второго параметра пятого класса&quot;</span><span style="color: #339933;">,</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	<span style="color: #006600; font-style: italic;">//подключаем дефолтные значения</span>
	initialize <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>options<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">setOptions</span><span style="color: #009900;">&#40;</span>options<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	<span style="color: #006600; font-style: italic;">//определяем метод, выводящий сообщение</span>
	<span style="color: #006600; font-style: italic;">//с форматированной строкой из массива с параметрами</span>
   	show_options <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   		<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>print_r<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	<span style="color: #006600; font-style: italic;">//определяем метод для обмена значений</span>
	<span style="color: #006600; font-style: italic;">//между двумя параметрами</span>
	swap_options <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">setOptions</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
			option_one <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">option_two</span><span style="color: #339933;">,</span>
			option_two <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">options</span>.<span style="color: #660066;">option_one</span>
		<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> demo_7<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> demo_7 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Klass_fifth<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_7.<span style="color: #660066;">show_options</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_7.<span style="color: #660066;">setOptions</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>option_one <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Новое значение первого параметра&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_7.<span style="color: #660066;">swap_options</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	demo_7.<span style="color: #660066;">show_options</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><span id="demo_7" class="pseudobutton">Запуск седьмой демки</span></p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/klassy-mootools-urok18-chast1.html/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Учимся играть на Mootools Accordion-е. Урок 17. Долгожданный</title>
		<link>http://php.infoniac.ru/mootools-accordion-urok17</link>
		<comments>http://php.infoniac.ru/mootools-accordion-urok17#comments</comments>
		<pubDate>Sat, 12 Nov 2011 12:20:10 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[Mootools]]></category>
		<category><![CDATA[accordion]]></category>
		<category><![CDATA[украшения mootools]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=1075</guid>
		<description><![CDATA[<p>Да, пожалуй продолжим наши Mootools уроки. Продолжим и продвигаться по дополнениям к основной библиотеке Mootools и сегодня рассмотрим работу с одним из самых популярных плагинов Mootools - Accordion.</p>
	<p>Создание простого скрипта с <strong>плагином Accordion для Mootools</strong> довольно просто, но очнь прошу вас читать весь пост внимательно, т.к. создание более сложных скриптов уже может быть довольно сложным.</p>
	<p><em><strong>Итак, поехали!</strong></em></p>]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><h2>Основное</h2>
<h3>Делаем аккордион</h3>
<p>Для создание простого аккордиона нужно всего лишь выбрать пары из элементов: заголовок и содержания. Итак, вначале, назначим класс каждому нужному названию и класс элементу с содержанием:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;">	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h4</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;togglers&quot;</span>&gt;</span>Заголовок 1<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h4</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">p</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;elements&quot;</span>&gt;</span>Тут содержание - текст - для заголовка 1<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">p</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h4</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;togglers&quot;</span>&gt;</span>Заголовок 2<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h4</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">p</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;elements&quot;</span>&gt;</span>Тут содержание - текст - для заголовка 2<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">p</span>&gt;</span></pre></div></div>

<p>Теперь можно просто перенести данные классов в переменные и запустить новый объект <strong>accordion</strong>.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #006600; font-style: italic;">//Назначаем заголовки, которые будут, по совместительству, и активными областями</span>
	<span style="color: #003366; font-weight: bold;">var</span> zags_demo <span style="color: #339933;">=</span> $$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.togglers_1'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">//Назначаем содержание, которое будет скрыто до активации соответствующего заголовка</span>
	<span style="color: #003366; font-weight: bold;">var</span> content_demo <span style="color: #339933;">=</span> $$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.elements_1'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">//определяем объект accordion</span>
	<span style="color: #006600; font-style: italic;">//и передаем в качестве параметров назначенные выше переменные</span>
	<span style="color: #003366; font-weight: bold;">var</span> DemoAccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>zags_demo<span style="color: #339933;">,</span> content_demo<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>	Такое простое определение объекта даст следующий результат:</p>
<h4 class="togglers_1">Заголовок 1</h4>
<p class="elements_1">Содержание, находящееся под заголовком 1</p>
<h4 class="togglers_1">Заголовок 2</h4>
<p class="elements_1">Содержание, находящееся под заголовком</p>
<h4 class="togglers_1">Заголовок 3</h4>
<p class="elements_1">Содержание, находящееся под заголовком</p>
<h2>Параметры</h2>
<p>Как и при работе со всеми остальными объектами Mootools, у Accordion имеются параметры, которые нужно использовать, если настраиваете что-то большее, чем дефольтный Accordion. Встречайте! Параметры Accordion!</p>
<h3>display</h3>
<p><em>По умолчанию <strong class="hlt">0</strong>.</em></p>
<p>Этот параметр определяет, какой из элементов будет отображаться при загрузке страницы. По умолчанию параметр имеет значение 0, что означает, что при загрузке показывается первый элемент списка. Чтобы установить другой элемент, используйте любое другое значение (целое число). В отличие от параметра show, <strong>display</strong> отобразит элемент с небольшой анимацией.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> AccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>toggles<span style="color: #339933;">,</span> content <span style="color: #009900;">&#123;</span>
	    display<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span> <span style="color: #006600; font-style: italic;">//значение по умолчанию</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>show</h3>
<p><em>По умолчанию <strong class="hlt">0</strong>.</em></p>
<p>Примерно, как и парамер <strong>display</strong>, <strong>show</strong> определяет, какой элемент будет отображаться при загрузке страницы. Однако, в отличии от <strong>display</strong>, он просто показывает, без какой-либо анимации.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> AccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>toggles<span style="color: #339933;">,</span> content <span style="color: #009900;">&#123;</span>
	    show<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span> <span style="color: #006600; font-style: italic;">//значение по умолчанию</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>height</h3>
<p><em>По умолчанию <strong class="hlt">true</strong>.</em></p>
<p>При значении <em>true</em> этот параметр определяет, будет ли контент показан с привязкой к высоте. Это стандартное выполнение эффектов Accordion, показанное немного выше.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> AccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>toggles<span style="color: #339933;">,</span> content <span style="color: #009900;">&#123;</span>
	    height<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span> <span style="color: #006600; font-style: italic;">//значение по умолчанию</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>width</h3>
<p><em>По умолчанию <strong class="hlt">false</strong>.</em></p>
<p>Назначение этого параметра похоже на праметр <strong>height</strong>, но вместо того, чтобы изменять высоту для отображения контента, изменяться будет ширина. При использовании &#8216;width&#8217; со стандартным набором параметров (как показано выше), то расстояние между заголовком останется прежним, в зависимости от высоты контента. Сам же блок с контентом откроется слева направо для отображения контента в этом пространстве. </p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> AccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>toggles<span style="color: #339933;">,</span> content <span style="color: #009900;">&#123;</span>
	    height<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span> <span style="color: #006600; font-style: italic;">//значение по умолчанию</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>opacity</h3>
<p><em>По умолчанию <strong class="hlt">true</strong>.</em></p>
<p>Параметр определяет, будет или не бует приминяться эффект прозрачности при отображаении контента. Эффект этого параметра можно увидеть в примере выше &#8211; мы же там использовали обычное определение объекта, потому там и используются стандартные значения параметров.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> AccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>toggles<span style="color: #339933;">,</span> content <span style="color: #009900;">&#123;</span>
	    opacity<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span> <span style="color: #006600; font-style: italic;">//значение по умолчанию</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>fixedHeight</h3>
<p><em>По умолчанию <strong class="hlt">false</strong>.</em></p>
<p>Используется для установки фиксирвованной высоты. Нужное значение &#8211; число (можно установить на 100, чтобы задать высоту в 100 пикселей). Параметр следует использовать о свойством <strong>overflow</strong> каскадныйх таблиц стилей, когда необходимая фиксированная высота блока меньше, чем естественная высота блока с контентом.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> AccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>toggles<span style="color: #339933;">,</span> content <span style="color: #009900;">&#123;</span>
	    fixedHeight<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span> <span style="color: #006600; font-style: italic;">//значение по умолчанию</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>fixedWidth</h3>
<p><em>По умолчанию <strong class="hlt">false</strong>.</em></p>
<p>Не трудно догадаться, что этот параметр работает также, как и fixedHeight, только работает с шириной блока.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> AccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>toggles<span style="color: #339933;">,</span> content <span style="color: #009900;">&#123;</span>
	    fixedWidth<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span> <span style="color: #006600; font-style: italic;">//значение по умолчанию</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>alwaysHide</h3>
<p><em>По умолчанию <strong class="hlt">false</strong>.</em></p>
<p>Позволяет добавить управление к заголовкам блоков. При установке на true, при клике на заголовок открытого блока, блок закроется без того, чтобы открывать какой-либо другой блок. Смотрите этот параметр в работе в примере ниже.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> AccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>toggles<span style="color: #339933;">,</span> content <span style="color: #009900;">&#123;</span>
	    alwaysHide<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span> <span style="color: #006600; font-style: italic;">//значение по умолчанию</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h2>События</h2>
<h3>onActive</h3>
<p>Срабатывает, когда подается команда на открытие элемента. В параметрах функции будет управляющий элемент, элемент, чей контент открывается и параметры.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> AccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>toggles<span style="color: #339933;">,</span> content <span style="color: #009900;">&#123;</span>
		onActive<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>toggler<span style="color: #339933;">,</span> element<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			toggler.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#76C83D'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//элемент управления подсветим зеленым</span>
	    	element.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#76C83D'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>onBackground</h3>
<p>Срабатывает, когда элемент начинает закрываться. Передает все другие элементы, которые закрываются, но не открываются.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">var</span> AccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>toggles<span style="color: #339933;">,</span> content <span style="color: #009900;">&#123;</span>
			onBackground<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>toggler<span style="color: #339933;">,</span> element<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		    	toggler.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#DC4F4D'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//элемент управления подсветим красным</span>
		    	element.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#DC4F4D'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//элемент закрывающийся подсветим красным</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>onComplete</h3>
<p>Как можно догадаться, это событие срабатывает, по завершению действия. Передает переменную с элементом контента. Возможно существуют лучшие методы получить доступ к контенту, поэтому, если кто-то их знает, пишите <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">var</span> AccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>toggles<span style="color: #339933;">,</span> content <span style="color: #009900;">&#123;</span>
			onComplete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>one<span style="color: #339933;">,</span> two<span style="color: #339933;">,</span> three<span style="color: #339933;">,</span> four<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		    	one.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#5D80C8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//отмечаем синим</span>
		    	two.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#5D80C8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		   		three.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#5D80C8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		    	four.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#5D80C8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h2>Методы Accordion-a</h2>
<h3>.addSection();</h3>
<p>Добавляет пару заголовок/контент в объект Accordion. Работает схоже с остальными методами, о которых уже шла речь в наших уроках. К переменной объекта прикрепляем <strong>.addSection</strong>, после чего нужно обратится к id заголовка, id контента и далее нужно указать, какое по счёту положение новая пара должна принять (0 &#8211; начало списка).</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">AccordionObject.<span style="color: #660066;">addSection</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'togglersID'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'elementsID'</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Тут стоит заметить, что если таким образом добавлять объекты, то порядковый индекс нового объекта будет не 2, а +1 к индексу последнего элемента. Так, если у вас в списке 4 элемента (0-3), новый элемент, добавленный через <strong>.addSection();</strong>, будет 5-м, с индексом 4, соответственно.</p>
<h3>.display();</h3>
<p>Позволяет открыть определённый элемент по его порядковому номеру в массиве. Так, если бы мы выполнили код метода .addSection();, показанный выше, и после добавления элемента нам бы нужно было открыть добавленный элемент, то с .display(); нельзя использовать тот же самый индекс!</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">AccordionObject.<span style="color: #660066;">display</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// покажет только что добавленный элемент</span></pre></div></div>

<h2>Вкусняшки <em>Accordion</em>-овские</h2>
<p>Ниже можно простестировать всё, о чём шла речь в этом уроке. Accordion &#8211; интересный и полезный плагин к библиотеке Mootools, который я уже несколько раз использовал для придания дополнительного удобства пользования рабочим сайтом. Мне понравилось &#8211; всё просто и очень гибко!</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//определяем переменные массивов с заголовками и элементами с контента</span>
	<span style="color: #003366; font-weight: bold;">var</span> zags <span style="color: #339933;">=</span> $$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.zag'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> content <span style="color: #339933;">=</span> $$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.content'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">//создаем переменнцю объекта</span>
	<span style="color: #006600; font-style: italic;">//с помощью ключевого слова &quot;new&quot;</span>
	<span style="color: #006600; font-style: italic;">//передаем массив с заголовками</span>
	<span style="color: #006600; font-style: italic;">//передаем массив с контентом</span>
	<span style="color: #006600; font-style: italic;">//задаем параметры и события</span>
	<span style="color: #003366; font-weight: bold;">var</span> AccordionObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Accordion<span style="color: #009900;">&#40;</span>zags<span style="color: #339933;">,</span> content<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">//далее определяем, что при загрузке страницы</span>
		<span style="color: #006600; font-style: italic;">//будет показан контент, через метод &quot;show&quot; (по индексу)</span>
		<span style="color: #006600; font-style: italic;">//но БЕЗ каких-либо эффектов - он просто откроется</span>
		<span style="color: #006600; font-style: italic;">//также, обратите внимание, что если используете параметр &quot;fixedHeight,&quot;</span>
		<span style="color: #006600; font-style: italic;">//метод show не сработает при загрузке страницы.</span>
		<span style="color: #006600; font-style: italic;">//&quot;show&quot; имеет приоритет перед &quot;display&quot;</span>
		show<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">//при загрузке страницы, эта строчка покажет контент (по индексу),</span>
		<span style="color: #006600; font-style: italic;">//и контент будет открыт с приминением небольшого эффекта</span>
		<span style="color: #006600; font-style: italic;">//как говорилось выше, show в приоритете перед display</span>
		<span style="color: #006600; font-style: italic;">//display: 0,</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">//имеет дефолтное значение </span>
		<span style="color: #006600; font-style: italic;">//создается вертикальный аккордион</span>
		height <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">//далее, создается для горизонтального аккордиона</span>
		<span style="color: #006600; font-style: italic;">//он немного сложнее в использовании из-за необходимости использовать CSS</span>
		width <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">//дефолтное значение</span>
		<span style="color: #006600; font-style: italic;">//запустит немного прозрачности в эффект</span>
		opacity<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">//дефолтное значение false, но можно указать и числовое значение -</span>
		<span style="color: #006600; font-style: italic;">//закрепит высоту всех контейнеров</span>
		<span style="color: #006600; font-style: italic;">//потребует использование overflow</span>
		<span style="color: #006600; font-style: italic;">//не будет работать при загрузке страницы, если будет использоваться show</span>
		fixedHeight<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">//может быть false или целое число</span>
		<span style="color: #006600; font-style: italic;">//схоже с fixedHeight,</span>
		<span style="color: #006600; font-style: italic;">//но используется с горизонтальными аккордионами</span>
		fixedWidth<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">//позволяет закрывать открытые элементы</span>
		alwaysHide<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">//обычное событие onComplete</span>
		<span style="color: #006600; font-style: italic;">//передаёт переменную с элементом для каждого отдельного элемента с контентом</span>
		onComplete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>var1<span style="color: #339933;">,</span> var2<span style="color: #339933;">,</span> var3<span style="color: #339933;">,</span> var4<span style="color: #339933;">,</span> var5<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			var1.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#5D80C8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//синий цвет</span>
			var2.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#5D80C8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			var3.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#5D80C8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			var4.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#5D80C8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #006600; font-style: italic;">//добавленный элемент</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'onComplete'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#5D80C8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">//это событие сработает, когда элемент будет открываться</span>
		<span style="color: #006600; font-style: italic;">//передаст элемент, управляющий состоянием контента</span>
		<span style="color: #006600; font-style: italic;">//и элемент контента, над которым производится действие</span>
		onActive<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>toggler<span style="color: #339933;">,</span> element<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			toggler.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#76C83D'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//зеленый</span>
			element.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#76C83D'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'onActive'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#76C83D'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">//событие срабатывает, когда элемент с контентом начинает закрываться</span>
		<span style="color: #006600; font-style: italic;">//передаст всем остальным элементам</span>
		<span style="color: #006600; font-style: italic;">//закрывающийся элемент или тот, что не открывается</span>
		onBackground<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>toggler<span style="color: #339933;">,</span> element<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			toggler.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#DC4F4D'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//красный</span>
			element.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#DC4F4D'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'onBackground'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#DC4F4D'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'add_section'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">//новая часть аккордеона  - это стандартная аккордионная пара</span>
		<span style="color: #006600; font-style: italic;">//переключатель и контент</span>
		<span style="color: #006600; font-style: italic;">//указываем, куда нужно его установить</span>
		AccordionObject.<span style="color: #660066;">addSection</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'addToggler'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'addElement'</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// в самое начало</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'display_section'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">//определяет, какой объект аккордиона первым отобразиться на странице</span>
		<span style="color: #006600; font-style: italic;">//будет иметь приоритет над аналогичным параметром в разделе options</span>
		AccordionObject.<span style="color: #660066;">display</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Далее, по цветам можно видеть, что происходит с нашими элементами при запуске объекта Accordion.</p>
<div id="onComplete" class="events">onComplete</div>
<div id="onActive" class="events">onActive</div>
<div id="onBackground" class="events">onBackground</div>
<h3 class="zag">Заголовок 1</h3>
<p class="content">Этот элемент предназначен для содержания контента, который будет прятаться и открываться при нажатии на его заголовок.</p>
<h3 class="zag">Заголовок 2</h3>
<p class="content">Этот элемент предназначен для содержания контента, который будет прятаться и открываться при нажатии на его заголовок.</p>
<h3 class="zag">Заголовок 3</h3>
<p class="content">Этот элемент предназначен для содержания контента, который будет прятаться и открываться при нажатии на его заголовок.</p>
<h3 class="zag">Заголовок 4</h3>
<p class="content">Этот элемент предназначен для содержания контента, который будет прятаться и открываться при нажатии на его заголовок.</p>
<h3 id="addToggler">Добавочный заголовок</h3>
<p id="addElement">Этот элемент предназначен для содержания контента, который будет прятаться и открываться при нажатии на его заголовок.</p>
<p>	Можно попробовать добавить новый элемент с помощью этой кнопки<br />
	<span class="pseudobutton" id="add_section">Добавить пару</span><br />
	<span class="pseudobutton" id="display_section">Показать добавленную пару</span></p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/mootools-accordion-urok17/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Сортировка элементов списка через объект Sortables и введение в методы Mootools &#8211; Урок 16</title>
		<link>http://php.infoniac.ru/sortables-metody-urok16.html</link>
		<comments>http://php.infoniac.ru/sortables-metody-urok16.html#comments</comments>
		<pubDate>Wed, 01 Dec 2010 09:28:17 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Разное]]></category>
		<category><![CDATA[Уроки новичка]]></category>
		<category><![CDATA[sortables]]></category>
		<category><![CDATA[методы]]></category>
		<category><![CDATA[перетаскивание]]></category>
		<category><![CDATA[списки]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=888</guid>
		<description><![CDATA[Итак, настал тот день, настал тот час, когда пора продвигаться в наших уроках по Mootools. Сегодня пробежимся ещё по одному плагину стандартной комплектации библиотеки Mootools из раздела "more". <strong>Плагин Sortables</strong> - это очень мощный инструмент, позволяющий создавать сортируемые списки (элементы &#60;UL&#62; или &#60;OL&#62;, а точнее элементы &#60;LI&#62; внутри них) путем их перемещения/перетаскивания, тем самым серьезно расширяя возможности пользовательского интерфейса вашего сайта. В этот плагин, также входит функция "<strong>serialize</strong>", которая выдает массив со списком всех id элементов на странице - очень полезно для работы со скриптами на удаленном сервере. Так как это введение в данный урок, то сказать тут больше нечего: читайте урок, узнаете больше ;).]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><h2>Основы</h2>
<p><script type="text/javascript"><!--
google_ad_client = "pub-8205915997794532";
/* 728x90, создано 08.12.10 */
google_ad_slot = "3730215141";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>Создание нового объекта Sortables</h3>
<p>Итак, вначале нам необходимо произвести обычную процедуру по передаче необходимых элементов нашей основной переменной. Если есть необходимость, чтобы несколько списков имели функционал сортировки, нужно добавить их ID через запятую:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> sortablesArray <span style="color: #339933;">=</span> $$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#listA, #listB'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Этот код помещает 2 списка (элемент &lt;UL&gt;/ &lt;OL&gt;) в переменную, с помощью которой можно создать новый объект Sortables:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> sortables  <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Sortables<span style="color: #009900;">&#40;</span>sortablesArray<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Если использовать следующий HTML код</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">ul</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;listA&quot;</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>Элемент A1<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>Элемент A2<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>Элемент A3<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>Элемент A4<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">ul</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">ul</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;listB&quot;</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>Элемент B1<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>Элемент B2<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>Элемент B3<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span>Элемент B4<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">ul</span>&gt;</span></pre></div></div>

<p>то сортируемые списки выглядели бы так:</p>
<ul id="listA">
<li>Элемент A1</li>
<li>Элемент A2</li>
<li>Элемент A3</li>
<li>Элемент A4</li>
</ul>
<ul id="listB">
<li>Элемент B1</li>
<li>Элемент B2</li>
<li>Элемент B3</li>
<li>Элемент B4</li>
</ul>
<h2>Параметры сортируемого списка</h2>
<p>Если есть необходимость расширить или уточнить функциональность вашего сортируемого списка, объект Sortables поддерживает целый ряд дополнительных параметров, которые окажут сильное подспорье в этом.</p>
<h3>constrain (false)</h3>
<p>Этот параметр определяет, можно ли будет переносить элементы списка из одного списка в другой. Скажем, в текущем объекте Sortables храняться 2 списка &lt;UL&gt;, а установив <em>constrain: true</em>, говорим обработчику, что выносить элемент за пределы его родительского тега нельзя.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> sortables  <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Sortables<span style="color: #009900;">&#40;</span>sortables Array<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    constrain<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span> <span style="color: #006600; font-style: italic;">//значене по умолчанию: false</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>clone (false)</h3>
<p>Этот параметр клонирует текущий сортируемый элемент, прикрепляя его положение к курсору мыши, оставляя оригинальный элемент в своем месте. Ниже будет пример, в котором все это показывается.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> sortables  <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Sortables<span style="color: #009900;">&#40;</span>sortables Array<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    clone<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span> <span style="color: #006600; font-style: italic;">//значение по умолчанию: false</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>handle (false)</h3>
<p>Параметр определяет элемент, который будет играть роль &#8220;ручки&#8221; определенного элемента списка. Назначение &#8220;ручки&#8221; становится полезным, когда нужно сохранить возможность выделять текст в элементах списка или же возможность совершать другие действия в элементе &lt;LI&gt;, а значение по умолчанию (<em>false</em>) делает весь элемент LI одной сплошной ручкой.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> handles <span style="color: #339933;">=</span> $$<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'.handlesClass'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">var</span> sortables <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Sortables<span style="color: #009900;">&#40;</span>sortablesArray<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    handle<span style="color: #339933;">:</span> handles <span style="color: #666666; font-style: italic;">//по умолчанию false, но сейчас передаем массив с элементами handle</span></pre></div></div>

<h3>opacity (1)</h3>
<p>Определяет степень прозрачности элемента. Если <strong>clone</strong> был установлен на <em>true</em>, то <strong>opacity</strong> относится к элементу, который остается на месте, а не к элементу, который следует за курсором.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> sortables  <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Sortables<span style="color: #009900;">&#40;</span>sortables Array<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    opacity<span style="color: #339933;">:</span> <span style="color: #CC0000;">1</span> <span style="color: #006600; font-style: italic;">//по умолчанию 1, т.е. вообще без прозрачности</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>revert (false)</h3>
<p>Принимает либо <em>false</em>, либо параметр объекта Fx.options. Если укажете Fx.options, при &#8220;установке&#8221; сортируемого элемента будут использоваться указанные параметры для создания мягких переходов и т.д. Например, можно установить &#8220;<strong>duration:long</strong>&#8221; и клону потребуется некоторое время для установки себя на выбранное место. В примере ниже используется похожий эффект, так что можете посмотреть, как это все действует.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> sortables  <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Sortables<span style="color: #009900;">&#40;</span>sortables Array<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    revert<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span> <span style="color: #006600; font-style: italic;">//по умолчанию</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//не по умолчанию</span>
<span style="color: #003366; font-weight: bold;">var</span> sortables  <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Sortables<span style="color: #009900;">&#40;</span>sortables Array<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    revert<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
        duration<span style="color: #339933;">:</span> <span style="color: #CC0000;">50</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>snap (4)</h3>
<p>Как и в случае с <a href="http://php.infoniac.ru/mootools-drag-move-objects-tut12.html">перетаскиванием</a> и <a href="http://php.infoniac.ru/kak-sdelat-slaider-mootools-urok14.html">прокруткой</a>, параметр <strong>snap</strong> определяет, сколько пикселей должен пройти курсор мыши, чтобы элемент начал его &#8220;преследовать&#8221;.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> sortables  <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Sortables<span style="color: #009900;">&#40;</span>sortables Array<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    snap<span style="color: #339933;">:</span> <span style="color: #CC0000;">10</span> <span style="color: #006600; font-style: italic;">//нужно провести курсором 10 пикселей, чтобы сортировка заработала</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h2>События Sortables</h2>
<p>События для объекта Sortables просты и понятны. Каждое из них работает с элементом, которые сортируется (не с его клоном, в случаях, когда clone: true).</p>
<ul>
<li><strong>onStart</strong> &#8211; запускается при начале перетаскивания;</li>
<li><strong>onSort</strong> &#8211; запускается при изменении порядка элементов списка;</li>
<li><strong>onComplete</strong> &#8211; запускается, когда перетаскиваемый элемент отпускается на новое место обитания.</li>
</ul>
<p>Немного подробнее остановимся на событиях, когда рассмотрим примеры.</p>
<h2>Методы объекта Sortables</h2>
<p>До сих пор как-то не заходил у нас разговор о методах вообще, несмотря на то, что мы их уже не раз использовали. По сути, методы &#8211; это функции, которые принадлежат классам.  Классы мы рассмотрим немного позже, но все-равно, рассмотрим основную идею, что такое классы. Этот плагин (и другие, которые мы уже использовали) использует примерно одну и ту же схему &#8211; инициализируется новый экземпляр класса с помощью ключевого слова &#8220;<strong>new</strong>&#8220;, определяются несколько параметров и опций, добавляются несколько событий и всё &#8211; вот вам новый объект Sortables или эффект Tween. Эта схема и является основой работы с классами. В своей основе, класс позволяет сохранять опции и функции, которые можно использовать тогда, когда это необходимо. Методы &#8211; это специальные функции, которые существуют внутри классов и добавляют определенный функционал этим классам. Например <strong>.set()</strong> и <strong>.get()</strong> &#8211; это методы, которые расширяют функциональность объектов <strong>Element</strong>. Если смотреть на класс Fx.Tween, <strong>.start()</strong> является его методом. Для более глубокого понимания методов, далее рассмотрим методы класса Sortables.</p>
<h3>.detach()</h3>
<p>Этот метод позволяет отключить все &#8220;ручки&#8221;, что сделает весь список не сортируемым. Метод полезен для отмены действия метода <strong>.attach();</strong></p>
<h3>.attach();</h3>
<p>Этот метод используется для присоединения &#8220;ручек&#8221; к сортируемому списку. Используется для возобновления &#8220;сортируемости&#8221; списков после использования метода <strong>.detach()</strong>.</p>
<h3>.addItems();</h3>
<p>Позволяет добавлять новые элементы в список. Скажем, к примеру, что имеется список, в который пользователь может добавить новый элемент, но тогда нужно будет включить &#8220;сортируемость&#8221; этого нового элемента.</p>
<h3>.removeItems();</h3>
<p>Этот метод позволяет удалить &#8220;сортируемость&#8221; с элемента в сортируемом списке. Полезно, когда нужно закрепить какой-то определенный элемент списка.</p>
<h3>.addLists();</h3>
<p>Вместо того, чтобы добавлять несколько элементов в список, возможно будет полезнее и быстрее вставить в объект Sortables сразу целый список? Именно это и делает метод <strong>.addLists();</strong>.</p>
<h3>.removeLists();</h3>
<p>Следующий метод в списке отвечает за удаление целых списков, в отличие от <strong>.removeItems();</strong>, который удаляет &#8220;сортируемость&#8221; с отдельных элементов. Эти методы предотвращают перемещение элементов, закрепляя их содержимое на одном месте.</p>
<h3>.serialize();</h3>
<p>Сортирование &#8211; это конечно хорошо, но а что, если появится необходимость произвести какие-нибудь действия над данными? Метод <strong>.serialize();</strong> возвращает два списка: один с id всех элементов списка и их порядковый номер в нем. С помощью этого метода можно выбирать из какого списка брать данные и лишь указав его индексное значение (порядковый номер) в обекте.</p>
<p>Чтобы полностью пройти по теме методов нужно намного больше времени и писанины, чем эти несколько строчек. Но эти строчки сойдут для того, чтобы можно было ознакомиться с этим новым в наших уроках принципах. Ну а дальше мы немного углубимся в эту тему.</p>
<h2>Вкуснотища!</h2>
<p>Итак, вот оно, самое сладкое (по крайней мере для меня) <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Вот примерик, в котором у нас будет несколько нумерованных списков, которые будут принадлежать объекту Sortables. Конечно же, используем все методы, описанные выше. Помните одно: весь код, указанный ниже, нужно вставить в <a href="http://php.infoniac.ru/what-is-domready.html">событие domready</a>.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">window.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domready'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #003366; font-weight: bold;">var</span> sortableListsArray <span style="color: #339933;">=</span> $$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#listA, #listB'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> sortableLists <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Sortables<span style="color: #009900;">&#40;</span>sortableListsArray<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> sortableListsArray <span style="color: #339933;">=</span> $$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#numberList, #letterList'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> sortableLists <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Sortables<span style="color: #009900;">&#40;</span>sortableListsArray<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
	clone<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
	handle<span style="color: #339933;">:</span> <span style="color: #3366CC;">'.handle'</span><span style="color: #339933;">,</span>
	revert<span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
	    <span style="color: #006600; font-style: italic;">//принимают эффекты FX</span>
		duration<span style="color: #339933;">:</span> <span style="color: #CC0000;">50</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	opacity<span style="color: #339933;">:</span> .5<span style="color: #339933;">,</span>
	onStart<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>el<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">//передается перетаскиваемый элемент</span>
		$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'onStartEvent'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F865'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		el.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F865'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	onSort<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>el<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">//передается перетаскиваемый элемент</span>
		$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'onSortEvent'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F865'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	onComplete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>el<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">//передается перетаскиваемый элемент</span>
		$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'onCompleteEvent'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F865'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> listOne <span style="color: #339933;">=</span> sortableLists.<span style="color: #660066;">serialize</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> listTwo <span style="color: #339933;">=</span> sortableLists.<span style="color: #660066;">serialize</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'numberListOrder'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'span'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'text'</span><span style="color: #339933;">,</span> listOne<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'numberListOrder'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F865'</span><span style="color: #009900;">&#41;</span>
		$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'letterListOrder'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'span'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'text'</span><span style="color: #339933;">,</span> listTwo<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'letterListOrder'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F865'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">detach</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//отключает ручки, потому нужно понажимать на кнопочки, чтобы включить</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> addListoSort <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'addListTest'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'addList'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	sortableLists.<span style="color: #660066;">addLists</span><span style="color: #009900;">&#40;</span>addListoSort<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'removeList'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	sortableLists.<span style="color: #660066;">removeLists</span><span style="color: #009900;">&#40;</span>addListoSort<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'handlesON'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	sortableLists.<span style="color: #660066;">attach</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'handlesOFF'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	sortableLists.<span style="color: #660066;">detach</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> itemOne <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'one'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'addItem'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	sortableLists.<span style="color: #660066;">addItems</span><span style="color: #009900;">&#40;</span>itemOne<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'removeItem'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	sortableLists.<span style="color: #660066;">removeItems</span><span style="color: #009900;">&#40;</span>itemOne<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Ручки не включены по умолчанию, как и указано в комментариях к коду. Для того, чтобы запустить &#8220;сортируемость&#8221; списка нужно будет поднажимать на кнопочки <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
<div id="onStartEvent" class="events">событие onStart</div>
<div id="onSortEvent" class="events">событие onSort</div>
<div id="onCompleteEvent" class="events">событие onComplete</div>
<p>
<span class="pseudobutton" id="handlesON">Включить ручки</span><br />
<span class="pseudobutton" id="handlesOFF">Включить ручки</span></p>
<p><span class="pseudobutton" id="addItem">Добавить сортируемость элементу с id=&#8221;one&#8221;</span><br />
<span class="pseudobutton" id="removeItem">Убрать сортируемость этого элемента</span></p>
<div id="numberListOrder">Порядок верхнего списка: <span></span></div>
<ul id="numberList" class="sortlists">
<li id="one"><span class="handle"></span>1</li>
<li id="two"><span class="handle"></span>2</li>
<li id="three"><span class="handle"></span>3</li>
<li id="four"><span class="handle"></span>4</li>
<li id="five"><span class="handle"></span>5</li>
<li id="six"><span class="handle"></span>6</li>
</ul>
<div id="letterListOrder">Порядок нижнего списка: <span></span></div>
<ul id="letterList" class="sortlists">
<li id="letterA"><span class="handle"></span>A</li>
<li id="letterB"><span class="handle"></span>B</li>
<li id="letterC"><span class="handle"></span>C</li>
<li id="letterD"><span class="handle"></span>D</li>
<li id="letterE"><span class="handle"></span>E</li>
<li id="letterF"><span class="handle"></span>F</li>
</ul>
<p><span class="pseudobutton" id="addList">Добавить &#8220;сортируемость&#8221; списку</span><br />
<span class="pseudobutton" id="removeList">Убрать &#8220;сортируемость&#8221; у списока</span></p>
<ul id="addListTest" class="sortlists">
<li id=""><span class="handle"></span>добавить A</li>
<li id=""><span class="handle"></span>добавить B</li>
<li id=""><span class="handle"></span>добавить C</li>
<li id=""><span class="handle"></span>добавить D</li>
<li id=""><span class="handle"></span>добавить E</li>
<li id=""><span class="handle"></span>добавить F</li>
<li id=""><span class="handle"></span>добавить G</li>
</ul>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/sortables-metody-urok16.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Применение Fx.Slide к нескольким элементам одновременно</title>
		<link>http://php.infoniac.ru/primenit-fx-slide-k-neskolkim-elementam-odnovremenno.html</link>
		<comments>http://php.infoniac.ru/primenit-fx-slide-k-neskolkim-elementam-odnovremenno.html#comments</comments>
		<pubDate>Tue, 05 Oct 2010 19:30:54 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[Mootools]]></category>
		<category><![CDATA[fx.slide]]></category>
		<category><![CDATA[эффекты]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=806</guid>
		<description><![CDATA[<p>Сегодня залез на <a href="http://otvety.google.ru">otvety.google.ru</a> и обнаружил вопрос по Mootools, который безнаказанно без ответа лежал АЖ с марта сего года. Я, конечно, не уверен, что тогда я бы ответил на этот вопрос, но зато сейчас смог и никто до меня не смог. Ладно, смог, не смог уже не важно, тем более, что смог уже закончился (Вон, какие шарады выдаю).</p>
<p>Итак, суть вопроса такова: "Как на mootools сделать эффекты к нескольким объектам с одинаковым id?"</p>]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Во-первых, мой опытный уже глаз, сразу распознал ошибку. А ты, мой пытливый и любовытный читатель-программист? Правильно! На одной странице не может быть несколько одинаковых ID. Далее автор приводит такой код:</p>


<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;v_toggle&quot;</span>&gt;</span>ссылка<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;vertical_slide&quot;</span>&gt;</span>текст<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;v_toggle&quot;</span>&gt;</span>ссылка<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;vertical_slide&quot;</span>&gt;</span>текст<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;v_toggle&quot;</span>&gt;</span>ссылка<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;vertical_slide&quot;</span>&gt;</span>текст<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div>





<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">window.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domready'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #003366; font-weight: bold;">var</span> myVerticalSlide <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Fx.<span style="color: #660066;">Slide</span> <span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'vertical_slide'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>duration<span style="color: #339933;">:</span> <span style="color: #CC0000;">200</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
myVerticalSlide.<span style="color: #660066;">hide</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
       $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'v_toggle'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
               e.<span style="color: #000066;">stop</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
              myVerticalSlide.<span style="color: #660066;">toggle</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span></pre></div></div>



<p>У автора этого вопроса, понятное дело, сработал только первый DIV: обработчик браузера, при получении кода, получает вначале именно первый DIV с соответствующим ID, соответственно, именно этот DIV и получает <strong>Fx.Slide</strong>. Вот пример (кстати, пришлось завалить валидацию этой страницы, т.к. ни один валидатор HTML не признает код правильным, если в нем есть несколько одинаковых ID):</p>
<br />
<!--start_raw-->
<div id="example1"><a id="v_toggle">ссылка</a>
<div id="vertical_slide">текст</div>
<a id="v_toggle">ссылка</a>
<div id="vertical_slide">текст</div>
<a id="v_toggle">ссылка</a>
<div id="vertical_slide">текст</div>
</div>
<!--end_raw-->
<br />
<p>Итак, я взялся и понял как сделать так, что бы нажимая на любую из ссылок срабатывал Fx.Slide каждого из дивов, при этом не используя разные ID. Во-первых, ID у нас становятся CLASS:</p>


<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;v_toggle&quot;</span>&gt;</span>ссылка<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;vertical_slide&quot;</span>&gt;</span>текст<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;v_toggle&quot;</span>&gt;</span>ссылка<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;vertical_slide&quot;</span>&gt;</span>текст<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;v_toggle&quot;</span>&gt;</span>ссылка<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;vertical_slide&quot;</span>&gt;</span>текст<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div>



<p>А код <a href="http://php.infoniac.ru/category/mootools/">Mootools</a> приобретает такой вид, который и будет делать именно то, что нам нужно:</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">window.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domready'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
   <span style="color: #006600; font-style: italic;">//добавляем массив элементов с классом к переменной</span>
   <span style="color: #003366; font-weight: bold;">var</span> myVerticalSlide <span style="color: #339933;">=</span> $$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.vertical_slide'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #006600; font-style: italic;">//назначаем эффект слайд каждому элементу массива</span>
   myVerticalSlide.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">item</span><span style="color: #339933;">,</span> index<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      <span style="color: #000066; font-weight: bold;">item</span><span style="color: #009900;">&#91;</span>index<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Fx.<span style="color: #660066;">Slide</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">item</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>duration<span style="color: #339933;">:</span> <span style="color: #CC0000;">200</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000066; font-weight: bold;">item</span><span style="color: #009900;">&#91;</span>index<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">hide</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
   <span style="color: #006600; font-style: italic;">//назначаем обработчик события</span>
   $$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.v_toggle'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">item</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      <span style="color: #000066; font-weight: bold;">item</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
         e.<span style="color: #000066;">stop</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         <span style="color: #006600; font-style: italic;">//устанавливаем метод toggle для всех элементов массива myVerticalSlide</span>
         myVerticalSlide.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">item</span><span style="color: #339933;">,</span> index<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #000066; font-weight: bold;">item</span><span style="color: #009900;">&#91;</span>index<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">toggle</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span></pre></div></div>



<p>И вот, что получилось:</p>
<!--start_raw-->
<div id="example2"><a class="v_toggle">ссылка</a>
<div class="vertical_slide">текст</div>
<a class="v_toggle">ссылка</a>
<div class="vertical_slide">текст</div>
<a class="v_toggle">ссылка</a>
<div class="vertical_slide">текст</div>
</div>
<br />
<!--end_raw-->
<p>Я планирую еще целый урок по Fx.Slide для Mootools, так что если интересует суть этого эффекта и его возможности, <a href="http://feeds.feedburner.com/Beginners-Programming-Training">подписывайтесь на RSS</a> <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . </p>
<p>пОКа!</p><!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/primenit-fx-slide-k-neskolkim-elementam-odnovremenno.html/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Периодический запуск функций с помощью .periodical(); и введение в хеш-массивы &#8211; Урок 15</title>
		<link>http://php.infoniac.ru/periodical-i-hesh-massivy.html</link>
		<comments>http://php.infoniac.ru/periodical-i-hesh-massivy.html#comments</comments>
		<pubDate>Thu, 23 Sep 2010 05:33:40 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Уроки новичка]]></category>
		<category><![CDATA[hash]]></category>
		<category><![CDATA[periodical]]></category>
		<category><![CDATA[setinterval]]></category>
		<category><![CDATA[массивы]]></category>
		<category><![CDATA[периодичность]]></category>
		<category><![CDATA[уроки]]></category>
		<category><![CDATA[хеш-массивы]]></category>
		<category><![CDATA[хеши]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=700</guid>
		<description><![CDATA[В этом уроке мы рассмотрим две &#8220;полки&#8221; библиотеки: первая, это функция .periodical();, после которой мы проведем короткое введение в хеш-массивы. Periodical будет делать именно то, для чего её и придумали (вот так открытие!): она будет выполнять функцию с заданной периодичностью. Вторя &#8220;полка&#8221;, хеш-массивы &#8211; это наборы данных, состоящих из связки ключа и значения, записанных определенным [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>В этом уроке мы рассмотрим две &#8220;полки&#8221; библиотеки: первая, это функция <strong>.periodical();</strong>, после которой мы проведем короткое введение в хеш-массивы. Periodical будет делать именно то, для чего её и придумали (вот так открытие!): она будет выполнять функцию с заданной периодичностью. Вторя &#8220;полка&#8221;, хеш-массивы &#8211; это наборы данных, состоящих из связки ключа и значения, записанных определенным образом. Итак, далее представим краткое введение в хеш-массивы и, если Вы все правильно поймёте, а я уверен в этом на 100% (ведь я то понял <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ), то эти знания окажутся весьма полезными.</p>
<h2>.periodical()</h2>
<h3>Основы</h3>
<p>Всё просто: добавляем .periodical(); к названию функции и эта функция будет периодически запускаться. Вроде бы всё, но не всё. Как и всегда, есть ещё несколько вещей, которые нужно упомянуть. Итак, нам нужна будет функция, которую будем выполнять, и периодичность, в миллисекундах, с которой эта функция будет выполняться.</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> periodicalFunction <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'ещё!'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
	<span style="color: #006600; font-style: italic;">//в этом примере ф-ция periodical() запускаетя при загрузке страницы,</span>
    <span style="color: #006600; font-style: italic;">//но, как будет показано далее, не обязательно на этом ограничиваться</span>
    window.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domready'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    	<span style="color: #006600; font-style: italic;">//число в скобках означает частоту запуска функции, в миллисекундах</span>
        	<span style="color: #003366; font-weight: bold;">var</span> periodicalFunctionVar <span style="color: #339933;">=</span> periodicalFunction.<span style="color: #660066;">periodical</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



<h3>Встроенная привязка с .bind();</h3>
<p>.periodical позволяет делать одну очень полезную вещь: она автоматически подставит переменную в качестве второго параметра. Например, если есть необходимость передать переменную за пределы <a href="http://php.infoniac.ru/what-is-domready.html">domready</a>, можно просто привязать эту переменную как второй параметр к функции, к которой привязываем periodical.</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">window.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domready'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//передаем что-нибудь переменной</span>
    <span style="color: #003366; font-weight: bold;">var</span> periodicalFunctionVar <span style="color: #339933;">=</span> periodicalFunction.<span style="color: #660066;">periodical</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">100</span><span style="color: #339933;">,</span> passedVar<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



<h3>Остановка запущенной по циклу функции</h3>
<h4>$clear()</h4>
<p>Для того, чтобы остановить выполнение функции, запущенной с помощью .periodical(), нужно использовать функцию $clear();. Тут все предельно просто:</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #006600; font-style: italic;">//удаляем из памяти переменную, которая содержала функцию и ее использование с periodical();</span>
    $clear<span style="color: #009900;">&#40;</span>periodicalFunctionVar<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



<h3>Пример</h3>
<p>Итак, подытожим&#8230; примером. Попробуем использовать несколько вещей, которые мы только что узнали (и немного до сели неизведанного), чтобы создать таймер. Вначале напишем HTML код таймера, где будем использовать кнопки старта и обнуления. Также, нужно будет создать полосу, которая будет увеличиваться по истечении времени. И ещё, нужно будет показать, сколько времени уже таймер запущен.</p>


<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;">	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">button</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;timer_start&quot;</span>&gt;</span>пуск<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">button</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">br</span> <span style="color: #66cc66;">/</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">button</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;timer_stop&quot;</span>&gt;</span>пауза<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">button</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">br</span> <span style="color: #66cc66;">/</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">button</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;timer_reset&quot;</span>&gt;</span>обновить<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">button</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;timer_bar&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;timer_display&quot;</span>&gt;</span>0<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div>



<p>Код Mootools в студию!</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> timerFunction <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//каждый раз, по вызову этой функции</span>
    <span style="color: #006600; font-style: italic;">//переменная currentTime будет увеличиваться на 1</span>
    <span style="color: #006600; font-style: italic;">//дальше остановимся более подробно на этом</span>
    <span style="color: #006600; font-style: italic;">//также, обратите внимание на использование конструкции &quot;this.counter&quot;</span>
    <span style="color: #006600; font-style: italic;">//&quot;this&quot; - это хеш-массив</span>
    <span style="color: #006600; font-style: italic;">//и &quot;counter&quot; это ключ</span>
    <span style="color: #006600; font-style: italic;">//и снова, более подробно остановимся на этом позже</span>
	<span style="color: #003366; font-weight: bold;">var</span> currentTime <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">counter</span><span style="color: #339933;">++;</span>
    <span style="color: #006600; font-style: italic;">/*я изменил первоначальный счетчик:
    дело в том, что если оставить счетчик на долго включенным
    строка может вытянуться довольно далеко, потому, пришлось
    доавить проверку ширины родительского элемента, что делается
    с помощью функции .getParent(), параметром которой можно указать не только
    название родительского тега, но даже и класс этого самого родительского элемента,
    а в моем случае, родительский класс называется post.
    Также обратите внимание на использование функции toInt(). Я думаю вы читали
    пост про фильтрацию и обработку чисел?
    */</span>
	<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>currentTime <span style="color: #339933;">==</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_bar'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getParent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.post'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getStyle</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'width'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">toInt</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_stop'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">fireEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #006600; font-style: italic;">//тут изменяем содержимое блока div, с данными о текущем времени таймера</span>
	<span style="color: #000066; font-weight: bold;">else</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_display'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'text'</span><span style="color: #339933;">,</span> currentTime<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #006600; font-style: italic;">//тут изменяем ширину блока с графическим отображением длительности выполнения функции</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_bar'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">setStyle</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'width'</span><span style="color: #339933;">,</span> currentTime<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">//устанавливаем атрибут disabled на true, чтобы выключить кнопку Пуска после самого пуска</span>
    <span style="color: #006600; font-style: italic;">//ниже я более подробно остановился на этом моменте</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_start'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'disabled'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #003366; font-weight: bold;">var</span> timerFunction <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> currentTime <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">counter</span><span style="color: #339933;">++;</span>
&nbsp;
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_display'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'text'</span><span style="color: #339933;">,</span> currentTime<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_bar'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">setStyle</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'width'</span><span style="color: #339933;">,</span> currentTime<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
	window.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domready'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">//заодно познакомьтесь: простой хеш-массив, состоящий из одной пары ключ/значение</span>
    <span style="color: #003366; font-weight: bold;">var</span> currentCounter <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Hash<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>counter<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #006600; font-style: italic;">//запускаем периодическое выполнение</span>
    <span style="color: #006600; font-style: italic;">//и вторым параметром привязываем this к необходимой переменной</span>
    <span style="color: #003366; font-weight: bold;">var</span> simpleTimer <span style="color: #339933;">=</span> timerFunction.<span style="color: #660066;">periodical</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">100</span><span style="color: #339933;">,</span> currentCounter<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #006600; font-style: italic;">//так как нам не нужно, чтобы таймер запускался при загрузке страницы, мы его и не запускаем</span>
    $clear<span style="color: #009900;">&#40;</span>simpleTimer<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #006600; font-style: italic;">//добавим событие к кнопке старта</span>
    <span style="color: #006600; font-style: italic;">//это позаботится о том, что таймер снова затикает</span>
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_start'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;click&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    	simpleTimer <span style="color: #339933;">=</span> timerFunction.<span style="color: #660066;">periodical</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">100</span><span style="color: #339933;">,</span> currentCounter<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #006600; font-style: italic;">//следующая функция очищает периодичную функцию и подсвечивает строку таймера</span>
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_stop'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;click&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    	$clear<span style="color: #009900;">&#40;</span>simpleTimer<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_bar'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#EFE02F'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_reset'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;click&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    	<span style="color: #006600; font-style: italic;">//сброс вначале очищает периодичную функцию $clear(simpleTimer);</span>
        <span style="color: #006600; font-style: italic;">//устанавливая счетчик на 0</span>
        <span style="color: #006600; font-style: italic;">//немного далее немного более :)</span>
        currentCounter.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'counter'</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #006600; font-style: italic;">//изменяем содержимое соответствующих элементов таймера</span>
        $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_display'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'text'</span><span style="color: #339933;">,</span> currentCounter.<span style="color: #660066;">counter</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_bar'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">setStyle</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'width'</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



<p>Опробуем таймер в действии?</p>
<table>
  <tr>
    <td><button id="timer_start">пуск</button><br />
      <button id="timer_stop">пауза</button><br />
      <button id="timer_reset">обновить</button></td>
    <td><div id="timer_display">0</div></td>
  </tr>
</table>
<div id="timer_bar"></div>
<p>Небольшое объяснения того, почему я выключаю кнопку Пуска при ее нажатии (она включается обратно при Паузе и Сбросе). Дело в том, что если повторно нажать Пуск, предварительно не остановив, счетчик &#8220;забежит&#8221; в два раза быстрее и его уже не остановить. А если потом ещё и ещё нажимать, скорость будет увеличиваться. Как бороться с этим явлением, я без понятия&#8230; Почему так происходит? Это, видимо, нужно разбираться в недрах и логике программирования, а мне сейчас не до этого.</p>
<p>И еще один момент: почему я установил</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_start'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'disabled'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



<p>в саму функцию, а не в</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">    $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_start'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;click&quot;</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    	simpleTimer <span style="color: #339933;">=</span> timerFunction.<span style="color: #660066;">periodical</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">100</span><span style="color: #339933;">,</span> currentCounter<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



<p>Тут получается довольно интересно и закручено, как в английском детективе. И тоже нужно разбираться в недрах, но в недрах функции .periodical(). Насколько я понимаю, все происходит примерно так: при клике на кнопку Пуск, мы повторно вызываем переменную <strong>simpleTimer</strong>, которая является хранителем периодичного запуска функции <strong>timerFunction</strong>. Итак, вызвав переменную simpleTimer, поделать уже ничего нельзя: определенная функция будет запускаться, пока ее не остановить. И вот, при каждом запуске функции она выполняет <code>$('timer_start').setStyle('disabled', 'true')</code>.</p>
<p>Кстати, просто использовать</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_start'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">removeEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #009900;">&#41;</span></pre></div></div>



<p>вместо</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'timer_start'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'disabled'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



<p>не получилось. Кнопка Пуск все равно работает, а почему, не могу себе даже представить <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  .</p>
<h2>Введение в хеш-массивы</h2>
<h3>Создание нового хеш-массива</h3>
<p>В примере, приведенном выше, возможно есть некоторые вещи, с которыми Вы еще не сталкивались (точнее я Вас с ними еще не сталкивал, а где-то еще вы с ними уже сталкивались). В некоторых местах мы используем хеш-массива. Хешы &#8211; это наборы, состоящие из пары ключ/значение, которые очень схожи с массивами, так как они содержать несколько объектов, однако к каждому содержащемуся в хеше объекту привязывается ключ. Итак, посмотрим под лупой на хеши:</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #003366; font-weight: bold;">var</span> hashVar <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Hash<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span> <span style="color: #3366CC;">'первыйКлюч'</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'второйКлюч'</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



<p>Итак, слева у нас получается ключ, которому присваивается значение справа (те из Вас, о читатели, которые все-таки знают что такое хеш-массива и уже задумываются о том, чтобы просмотреть другие посты моего блога, хочу лишь сообщить, что я рассматриваю сейчас только основы основ хеш-массивов. Написание функций для хранения данных с помощью хешей я оставлю на тот момент, когда можно будет поговорить о классах). Итак, существует много плюсов в том, чтобы использовать именно хеш-массивы. Во-первых, в одном объекте можно хранить многочисленные наборы данных, процесс обратного получения которых довольно прост, также как и хранение комплексных структур данных.</p>
<h3>.set() и .get()</h3>
<p>При работе с хеш-массивами можно использовать знакомые функции <strong>.set()</strong> и <strong>.get()</strong>. Если нужно задать ключу какое-либо значение, вначале нужно определить ключ, потом задать ему значение через <strong>.set()</strong>. Если нужно получить значение, просто нужно определить ключ и применить к нему <strong>.get()</strong>. В принципе, это всё!</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #006600; font-style: italic;">//взяв за основу хеш-массив, определенный выше</span>
	<span style="color: #006600; font-style: italic;">//первому ключу можно дать значение 200 вот так</span>
    hashVar.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'первыйКлюч'</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">200</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #006600; font-style: italic;">//с помощью .get() можно получить значение первого ключа</span>
    <span style="color: #006600; font-style: italic;">//после того, как мы дли ему значение 200, это значение мы и получим</span>
    <span style="color: #003366; font-weight: bold;">var</span> hashValue <span style="color: #339933;">=</span> hashVar.<span style="color: #660066;">get</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'первыйКлюч'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



<p>Если использовать латинские буквы для назначение ключа, то значение этого ключа можно получить в формате имя_хеш_массива.имя_ключа. Вот так:</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> hashValue <span style="color: #339933;">=</span> hashVar.<span style="color: #660066;">pervyi</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">//что означает тоже самое, что и</span>
<span style="color: #003366; font-weight: bold;">var</span> hashValue <span style="color: #339933;">=</span> hashVar.<span style="color: #660066;">get</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'pervyi'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



<h3>Добавляем новые данные в массив</h3>
<h4>.extend();</h4>
<p>Любой уже определенный хеш-массив можно дополнить новыми парами данных с помощью <strong>.extend()</strong>. Пример:</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #006600; font-style: italic;">//вначале создадим новый массив. Обычный массив.</span>
    <span style="color: #006600; font-style: italic;">//такой массив также состоит из пар ключ/значение</span>
    <span style="color: #006600; font-style: italic;">//но он не имеет возможностей хеша</span>
    <span style="color: #003366; font-weight: bold;">var</span> simpleObject <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span> <span style="color: #3366CC;">'третий'</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">450</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'четвертый'</span><span style="color: #339933;">:</span> <span style="color: #CC0000;">89</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>



<p>Если есть необходимость добавить эти данные к уже существующему хеш-массиву, мы просто используем .extend(); для того, чтобы создать свободное место для этих данных.</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	<span style="color: #006600; font-style: italic;">//так хеш-массив hashVar пополняется всеми данными массива simpleObject</span>
    hashVar.<span style="color: #660066;">extend</span><span style="color: #009900;">&#40;</span>simpleObject<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



<p>Очень важно помнить, что все дубликаты ключей будут переписаны вторым вариантом, т.е. тем, которым пополняем первый массив. Так, если у нас в первом массив была пара &#8220;первыйКлюч&#8221; : &#8220;буква А&#8221;, а в массиве, которым мы расширяем первый массив есть пара &#8220;первыйКлюч&#8221; : &#8220;буква Б&#8221;, то в окончательном массиве именно второй вариант выживет.</p>
<p>Если не хотите, чтобы второй вариант выжил, и вам нужно, что бы выжил именно первый вариант, нужно вместо <strong>.extend()</strong> использовать <strong>.combine()</strong>. В остальном функция <strong>.combine()</strong> работает также, как и <strong>.extend()</strong>.</p>
<h3>Удаляем пару данных из хеш-массива</h3>
<h4>.erase()</h4>
<p>Слово &#8220;erase&#8221; с английского переводится как &#8220;удалить&#8221;. Функция полностью оправдывает свое название: называете массив, добавляете <strong>.erase()</strong> и в скобках указываете ключ.</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">hashVar.<span style="color: #660066;">erase</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'первыйПлюч'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



<h3>Хеш-массивы и функция .each()</h3>
<p>С функцией <strong>.each()</strong> многие, скорее всего, уже знакомы из урока про массивы. Как и в случае с массивами, <strong>.each()</strong> перебирает каждую единицу данных хеш-массива, применяя к ней пользовательскую функцию.</p>


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">hashVar.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>value<span style="color: #339933;">,</span> key<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//простая функция по выводу сообщения со значением ключа и его значения</span>
    <span style="color: #006600; font-style: italic;">//обратите внимание, что при передаче данных функции</span>
    <span style="color: #006600; font-style: italic;">//вначале нужно передать значение, а потом уже и его ключ</span>
    <span style="color: #006600; font-style: italic;">//как и в случае с массивами: вначале item (значение), потом и index (его порядковый номер в массиве)</span>
    <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>key <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;:&quot;</span> <span style="color: #339933;">+</span> value<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



<p>На этом, пожалуй, всё! Надеюсь, урок пригодится вам также, как и мне.</p><!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/periodical-i-hesh-massivy.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Слайдеры &#8211; Урок 14 &#8211; Уроки Mootools</title>
		<link>http://php.infoniac.ru/kak-sdelat-slaider-mootools-urok14.html</link>
		<comments>http://php.infoniac.ru/kak-sdelat-slaider-mootools-urok14.html#comments</comments>
		<pubDate>Tue, 07 Sep 2010 11:10:32 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Уроки новичка]]></category>
		<category><![CDATA[объекты mootools]]></category>
		<category><![CDATA[ползунки]]></category>
		<category><![CDATA[прокрутка]]></category>
		<category><![CDATA[слайдер]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=670</guid>
		<description><![CDATA[Введение в слайдеры Если вы прочитали предыдущие , то Вам должны быть уже более или менее понятны большинство объектов библиотеки Mootools. Объект Slider особо ничем не отличается от других: создаете новый слайдер (new Slider), определяете элементы слайдера и ручки, определяете параметры и создаете несколько функций для обратного вызова и, в принципе, всё. Но, несмотря на [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><h2>Введение в слайдеры</h2>
Если вы прочитали предыдущие <a href="http://php.infoniac.ru/category/mootools/">уроки Mootools</a>, то Вам должны быть уже более или менее понятны большинство объектов библиотеки Mootools. Объект Slider особо ничем не отличается от других: создаете новый слайдер (new Slider), определяете элементы слайдера и ручки, определяете параметры и создаете несколько функций для обратного вызова и, в принципе, всё. Но, несмотря на то, что объект Slider и создается примерно по такому шаблону, есть несколько  вещей, которые обязательно нужно нам пройти.
<h2>Основы</h2>
<h3>Создание нового объекта Slider</h3>
Давайте сразу начнем с кода HTML и CSS. Основным тут является создание длинного, прямоугольного блока div (насколько длинный, зависит от того, для чего слайдер будет использоваться) и его дочернего элемента div, который будет служить &#8220;захватом&#8221; слайдера &#8211; ручкой.


<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">&lt;!--Вертикальный слайдер--&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;slider&quot;</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;knob&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div>



А код CSS будет выглядеть немного позамысловатее:


<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">//полоса прокрутка или слайдер
<span style="color: #cc00cc;">#slider</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#00C</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #933;">1px</span> <span style="color: #993333;">dashed</span> <span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">25px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">250px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
//<span style="color: #ff0000;">&quot;захват&quot;</span> или ручка
<span style="color: #cc00cc;">#knob</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#FF0</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">25px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">25px</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>



Теперь можно смело создавать новый объект Slider, для чего вначале создаем переменные с элементами и потом создаем новый (&#8220;<strong>new</strong>&#8220;) объект slider, также, как мы это делали с объектами <strong>tween</strong>, <strong>drag.move</strong> и <strong>morph</strong>:


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//создаем переменные для наших блоков</span>
<span style="color: #003366; font-weight: bold;">var</span> sliderObject <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'slider'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> knobObject <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'knob'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//создаем новый объект slider</span>
<span style="color: #006600; font-style: italic;">//но вначале, определяем элементы слайдера</span>
<span style="color: #006600; font-style: italic;">//а потом определяем объект захвата</span>
<span style="color: #003366; font-weight: bold;">var</span> SliderObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Slider<span style="color: #009900;">&#40;</span>sliderObject <span style="color: #339933;">,</span> knobObject <span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #006600; font-style: italic;">//а вот и параметры</span>
    <span style="color: #006600; font-style: italic;">//ниже каждый из них рассматривается более подробно</span>
    range<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">10</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
    snap<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
    steps<span style="color: #339933;">:</span> <span style="color: #CC0000;">10</span><span style="color: #339933;">,</span>
    offset<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
    wheel<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
    mode<span style="color: #339933;">:</span> <span style="color: #3366CC;">'horizontal'</span><span style="color: #339933;">,</span>
    <span style="color: #006600; font-style: italic;">//событие onchange запускается тогда, когда значение параметра step изменится</span>
    <span style="color: #006600; font-style: italic;">//и передаст текущее значение этому параметру</span>
    onChange<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>step<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">//сюда вставляем код того, что должно произойти по событию onchange</span>
        <span style="color: #006600; font-style: italic;">//можно ссылаться на параметр step</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
    <span style="color: #006600; font-style: italic;">//событие onTick передвигается, когда пользователь передвигает захват</span>
    <span style="color: #006600; font-style: italic;">//и передаст текущее положение (относительно родительского элемента)</span>
    onTick<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>pos<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #006600; font-style: italic;">//это необходимо для того, чтобы захват настроился</span>
        <span style="color: #006600; font-style: italic;">//ниже остановимся на этом вопросе более подробно</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">knob</span>.<span style="color: #660066;">setStyle</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'left'</span><span style="color: #339933;">,</span> pos<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
    <span style="color: #006600; font-style: italic;">//срабатывает, когда ползунок останавливается</span>
    <span style="color: #006600; font-style: italic;">//и пользователь &quot;отпускает&quot; его</span>
    onComplete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>step<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #006600; font-style: italic;">//сюда вставляем код того, что должно произойти по событию onComplete</span>
        <span style="color: #006600; font-style: italic;">//можно ссылаться на параметр step</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>



Немного грубовато все получилось, но, надеюсь, далее все прояснится.
<h3>Параметры объекта Slider</h3>
<ul>
	<li><strong>snap</strong> &#8211; захват (по умолчанию &#8211; <em>false</em>): булев тип (думаю, все знают, что это такое). Определяет то, будет ли бегунок закрепляться за шагами по мере передвижения по слайдеру (тут немного запутано, но попробую объяснить этот пункт немного дальше).</li>
	<li><strong>offset</strong> &#8211; сбвиг (по умолчанию &#8211; <em>0</em>): относительный сдвиг захвата от первоначального положения. С этим параметром нужно поэкспериментировать, чтобы понять его назначение <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</li>
	<li><strong>range</strong> &#8211; диапазон (по умолчанию &#8211; <em>false</em>): Очень полезный параметр. Можно назначить диапазон значений, на которые будут разбиваться шаги (параметр steps). Например, если был указан диапазон [0, 200], а параметр steps (шаги) имеет значение 10, то расстояние между шагами будет равно 20. Диапазон может также включать в себя отрицательные числа, например [-10, 0], что оказывается очень полезным при инвертировании скроллера (дальше больше© <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ).</li>
	<li><strong>wheel</strong> (по умолчанию &#8211; <em>false</em>): если установить параметр на true, то объект будет распознавать движения колеса мышки. При исползовании колёсика мышки, возможно нужно будет скорректировать диапазон, чтобы убедиться в том, что событие <em>mousewheel</em> не будет инвертировано (и снова дальше больше©).</li>
	<li><strong>steps</strong> &#8211; шаги (по умолчанию &#8211; <em>100</em>): Значение в 100 шагов очень удобно, так как его можно использовать как процентное соотношение. Однако, можно назначить столько, шагов, сколько душе угодно (в разумных пределах, конечно).</li>
	<li><strong>mode</strong> &#8211; режим (по умолчанию &#8211; &#8216;horizontal&#8217; &#8211; горизонтально): Режим определяет будет ли слайдер вертикальным или горизонтальным. Хотя, для того, чтобы сделать слайдер вертикальным или горизонтальным, нужно будет проделать еще несколько шагов.</li>
</ul>
<h3>Функции по событиям</h3>
<ul>
	<li><strong>onChange</strong>: это событие запускается, когда текущий шаг изменяет свое значение. Передает новое значение параметра &#8220;step&#8221;.</li>
	<li><strong>onTick</strong>: срабатывает, когда измеяется положение бегунка. Передает новое значение параметра &#8220;position&#8221;.</li>
	<li><strong>onComplete</strong>: запускается, когда пользователь отпускает бегунок. Передает новое значение параметра &#8220;step&#8221;.</li>
</ul>
Для лучшего понимания за что отвечает каждое событие и когда каждое из них изменяется, смотрите на пример ниже.
<h2>И самое вкусное &#8211; пример</h2>
Итак, давайте создадим, наконец, свой слайдер, который расставит все новые знания по полочкам.
<h3>.set();</h3>
Посмотрев на событие на элементе <strong>button</strong> и мы увидим метод <strong>.set()</strong> в действии. Он очень прост в использовании: просто вызываем слайдер, добавляем к нему метод .set() и шаг, с которым мы будем двигать бегунок.


<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">window.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domready'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> SliderObject <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Slider<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'slider-h'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'knob-h'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
		range<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">10</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
		snap<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>
		steps<span style="color: #339933;">:</span> <span style="color: #CC0000;">10</span><span style="color: #339933;">,</span>
		offset<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
		wheel<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
		mode<span style="color: #339933;">:</span> <span style="color: #3366CC;">'horizontal'</span><span style="color: #339933;">,</span>
	    onChange<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>step<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'change'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F825'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'steps_number'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'html'</span><span style="color: #339933;">,</span> step<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	    onTick<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>pos<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'tick'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F825'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'knob_pos'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'html'</span><span style="color: #339933;">,</span> pos<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">knob</span>.<span style="color: #660066;">setStyle</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'left'</span><span style="color: #339933;">,</span> pos<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	    onComplete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>step<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'complete'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F825'</span><span style="color: #009900;">&#41;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'steps_complete_number'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'html'</span><span style="color: #339933;">,</span> step<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span>step<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    	<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> SliderObjectV <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Slider<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'slider-v'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'knob-v'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
		range<span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><span style="color: #339933;">-</span><span style="color: #CC0000;">10</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
		snap<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
		steps<span style="color: #339933;">:</span> <span style="color: #CC0000;">10</span><span style="color: #339933;">,</span>
		offset<span style="color: #339933;">:</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span>
		wheel<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
		mode<span style="color: #339933;">:</span> <span style="color: #3366CC;">'vertical'</span><span style="color: #339933;">,</span>
	    onChange<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>step<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'changeV'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F825'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'stepsV_number'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'html'</span><span style="color: #339933;">,</span> step<span style="color: #339933;">*-</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	    onTick<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>pos<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'tickV'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F825'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'knobV_pos'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'html'</span><span style="color: #339933;">,</span> pos<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">knob</span>.<span style="color: #660066;">setStyle</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'top'</span><span style="color: #339933;">,</span> pos<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	    onComplete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>step<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'completeV'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">highlight</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#F3F825'</span><span style="color: #009900;">&#41;</span>
			$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'stepsV_complete_number'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'html'</span><span style="color: #339933;">,</span> step<span style="color: #339933;">*-</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span>step<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    	<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	SliderObjectV.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'set_knob'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		SliderObject.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">7</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'set_knobV'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">addEvent</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'click'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">//чтобы установить ползунок на 5, нужно установить его на -5</span>
		<span style="color: #006600; font-style: italic;">//т.к. в нашем случае идет поднятие ползунка вверх, а это значит мы уходим</span>
		<span style="color: #006600; font-style: italic;">//по ту сторону нуля</span>
		SliderObjectV.<span style="color: #660066;">set</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #CC0000;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>





<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;slider_wrap&quot;</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;change&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;indicator&quot;</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">strong</span>&gt;</span>onChange<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">strong</span>&gt;</span> передаёт шаг, на котором Вы находитесь: <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;steps_number&quot;</span>&gt;</span> <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;tick&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;indicator&quot;</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">strong</span>&gt;</span>onTick<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">strong</span>&gt;</span> передаёт положение ползунка: <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;knob_pos&quot;</span>&gt;</span> <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;complete&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;indicator&quot;</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">strong</span>&gt;</span>onComplete<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">strong</span>&gt;</span> передаёт текущий шаг: <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;steps_complete_number&quot;</span>&gt;</span> <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;slider-h&quot;</span>&gt;</span>
		<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;knob-h&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">button</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;set_knob&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;b&quot;</span>&gt;</span>Установить ползунок на 7-й шаг<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">button</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;changeV&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;indicator&quot;</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">strong</span>&gt;</span>onChange<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">strong</span>&gt;</span> передаёт шаг, на котором Вы находитесь: <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;stepsV_number&quot;</span>&gt;</span> <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;tickV&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;indicator&quot;</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">strong</span>&gt;</span>onTick<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">strong</span>&gt;</span> передаёт положение ползунка: <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;knobV_pos&quot;</span>&gt;</span> <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;completeV&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;indicator&quot;</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">strong</span>&gt;</span>onComplete<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">strong</span>&gt;</span> передаёт текущий шаг: <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;stepsV_complete_number&quot;</span>&gt;</span> <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">button</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;set_knobV&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;b&quot;</span>&gt;</span>Установить ползунок на 5-й шаг<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">button</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;slider-v&quot;</span>&gt;</span>
		<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;knob-v&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></div></div>



<!--start_raw-->
<div id="slider_wrap">
	<div id="change" class="indicator"><strong>onChange</strong> передаёт шаг, на котором Вы находитесь: <span id="steps_number"> </span></div>
	<div id="tick" class="indicator"><strong>onTick</strong> передаёт положение ползунка: <span id="knob_pos"> </span></div>
	<div id="complete" class="indicator"><strong>onComplete</strong> передаёт текущий шаг: <span id="steps_complete_number"> </span></div>
	<div id="slider-h">
		<div id="knob-h"></div>
	</div>
	<button id="set_knob" class="b">Установить ползунок на 7-й шаг</button>
	<div id="changeV" class="indicator"><strong>onChange</strong> передаёт шаг, на котором Вы находитесь: <span id="stepsV_number"> </span></div>
	<div id="tickV" class="indicator"><strong>onTick</strong> передаёт положение ползунка: <span id="knobV_pos"> </span></div>
	<div id="completeV" class="indicator"><strong>onComplete</strong> передаёт текущий шаг: <span id="stepsV_complete_number"> </span></div>
	<button id="set_knobV" class="b">Установить ползунок на 5-й шаг</button>
	<div id="slider-v">
		<div id="knob-v"></div>
	</div>
</div>
<!--end_raw-->
<p>Обратите внимание на пример с вертикальным слайдером: мы не только изменяем параметр &#8220;<em>mode</em>&#8221; (режим) на &#8220;<em>vertical</em>&#8221; (вертикальный), но мы также используем свойство стиля &#8220;<em>top</em>&#8221; вместо &#8220;<em>left</em>&#8221; в событии onTick, и передаем ему новое значение с помощью функции <strong>.setStyle()</strong>. Далее, при отображении числа для события onChange, мы умножаем его на -1 (минус один), что делает из отрицательного числа, положительное (если кто помнит базовую математику <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ). Это позволяет сделать две вещи: первое &#8211; заменить 10 на 0, где 0 &#8211; нижняя точка слайдера. Практически такого же результата, в принципе, можно добиться и установив параметр &#8220;range&#8221; на [10,0], но, при этом, колесо мышки будет работать наоборот. И это подводит нас ко второй вещи: только так можно заставить скрипт правильно понимать движение колеса мышки, ведь оно получает значения, а не слова (&#8220;vertical/horizontal&#8221;), а если пропустить первую &#8220;вещь&#8221; (с умножением на -1), то колесо прокрутки становится инвертированным. А проделав такой незамысловатый трюк, можно добиться правильного движения колеса прокрутки И получить правильные значения, где 0 (ноль) &#8211; минимальное значение, находящееся внизу.</p>

<p>К сожалению, не я это все придумал, а программист сайта ConsiderOpen.com, потому тут еще следует заметить, что этот трюк с умножением на -1 &#8211; это решение одного человека. Если Вам известен путь сделать тоже самое, но меньшими усилиями, все будут рады, если Вы этим поделитесь!</p><!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/kak-sdelat-slaider-mootools-urok14.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ваш опыт нужен тысячам!</title>
		<link>http://php.infoniac.ru/katalog-statei-po-web-programmirovaniju.html</link>
		<comments>http://php.infoniac.ru/katalog-statei-po-web-programmirovaniju.html#comments</comments>
		<pubDate>Fri, 27 Aug 2010 07:13:11 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Оптимизация]]></category>
		<category><![CDATA[Поисковые системы]]></category>
		<category><![CDATA[Работа с сайтом]]></category>
		<category><![CDATA[Разное]]></category>
		<category><![CDATA[акция]]></category>
		<category><![CDATA[веб-программирование]]></category>
		<category><![CDATA[опыт]]></category>
		<category><![CDATA[размещение статей]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=643</guid>
		<description><![CDATA[Объявляется преобразование моего блога в белый каталог статей на тему веб-программирования для новочков! Если вы хотите разметисть у меня на блоге свою статью на тему веб-программирования и что бы в статей было упоминание Вашего сайте, читайте дальше!]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Уважаемые читатели!<br />
Веб-программированию многие, как я, пытаются научиться на дому, т.е. не ходят на курсы, не учатся в ВУЗах или же просто ищут в интернете интересные задачи на тему программирования.</p>
<p>Судя по некоторым отзывам, мои <a href="http://php.infoniac.ru/category/mootools/">уроки по Mootools</a> очень помогают другим новичкам в плане Mootools. Но у меня, к сожалению, не так много интересных задач, которые я мог бы выложить в блог для рассмотрения и помощи другим новичкам, таким как я. Потому, хочу объявить о небольшой акции:</p>
<blockquote style="font-weight:bold;"><p>Если Вы также, как и я, учитесь программированию и у вас есть интересные задачи, темы, уроки? которыми вы готовы поделиться, пожалуйста, присылайте Ваши материалы мне на php &#8211; собака &#8211; инфониак.ru (думаю, разберете, как правильно адрес пишется) или просто через <a href="http://php.infoniac.ru/%d0%b3%d0%be%d1%80%d1%8f%d1%87%d0%b0%d1%8f-%d0%bb%d0%b8%d0%bd%d0%b8%d1%8f/">мою горячую линию</a>.</p></blockquote>
<p>Понятное дело, никто просто так не будет делиться своим опытом, но и понятное дело, что я не просто так предлагаю размещать Ваш опыт у Себя в блоге. Итак, если соберетесь прислать мне свой материал, пожалуйста, убедитесь в том, что:</p>
<ol>
<li>материал написан на тему веб-программирования, поисковых систем, верстки сайтов, дизайна веб-страниц и вообще интернете. Не допускаются темы заработка в интернете и всего такого. Если я посчитаю, что материал не будет интересен мои читателям, я:</li>
</ol>
<div style="margin-left:25px;">- отредактирую материал, если это поможет ему получить оттенок допустимой тематики;<br />
- отклоню материал с отпиской автору о причине сего.</div>
<ol start="2">
<li>материал уникален;</li>
<li>опрятно написан, без ошибок и опечаток (не так как у меня <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  );</li>
<li>состоит не менее чем из 300 слов, связанных между собой смыслом (см. пункт выше);</li>
<li>он уникален (см. пункт 2), если вы просто хотите перепостить материал уже размещенный на вашем сайте;</li>
<li>что в статье не просто теория, но и практические примеры (но и просто теория &#8211; не плохо, присылайте рассмотрим&#8230; я бы и сам попробовал придумать и прикрутить примеры);</li>
<li>если еще что-нибудь придумаю, обновлю <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</li>
</ol>
<p>С моей стороны вы получите в этом материале ссылку на Ваш блог и благодарности всех читателей за еще один хороший урок с примером <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  </p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/katalog-statei-po-web-programmirovaniju.html/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Уроки Mootools – Регулярные выражения – Урок 13</title>
		<link>http://php.infoniac.ru/regulyarnye-vyrazheniya-urok-13.html</link>
		<comments>http://php.infoniac.ru/regulyarnye-vyrazheniya-urok-13.html#comments</comments>
		<pubDate>Sun, 11 Jul 2010 05:22:15 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Уроки новичка]]></category>
		<category><![CDATA[contains]]></category>
		<category><![CDATA[escapeRegExp]]></category>
		<category><![CDATA[RegExp]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[поиск по регулярным выражениям]]></category>
		<category><![CDATA[регулярные выражения]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=596</guid>
		<description><![CDATA[Очень и очень трудно мне далось написание этого урока. Регулярные выражения вообще не самое простое, что есть в программировании, а уж для меня, так тем более. Например, пока я писал его, познакомился с функцией escapeRegExp(), которую хотел применить при доработке под свои нужды класса Mootools для поиска и подсветки текста на странице (аналог обычного поиска [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Очень и очень трудно мне далось написание этого урока. Регулярные выражения вообще не самое простое, что есть в программировании, а уж для меня, так тем более. Например, пока я писал его, познакомился с функцией <strong>escapeRegExp()</strong>, которую хотел применить при доработке под свои нужды <a href="http://davidwalsh.name/mootools-highlighter-search" rel="nofollow">класса Mootools для поиска и подсветки текста на странице</a> (аналог обычного поиска в Firefox и некоторых других браузерах, но не все ж умеют пользоваться встроенным поиском браузера…). Так вот там у меня ничего не получилось. Дебаггер ФФ всё твердил, что «escapeRegExp() is not a function» (не является функцией). Я так и не понял, что я делал не правильно. А здесь все получилось (<a href="#escape">в самом конце урока</a>).</p>
<p><span id="more-596"></span></p>
<h2>Основы</h2>
<h3>test()</h3>
<p>В своем самом простом выражении, регулярное выражение – это простой текст, который нужно найти в документе. Несмотря на то, что JavaScript уже имеет встроенный объект RegExp, который отвечает за формирование регулярных выражений, со своей собственной функцией <strong>test()</strong>, но функция test() в Mootools является более дружелюбной её версией, чем яваскриптовская.</p>
<p>Для начала, посмотрим на самый простой пример использования функции <strong>test()</strong>, в котором будем искать определенный текст, в более объемном тексте.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//Текст или строка, в которой будем искать</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_test <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"Найти что-нибудь здесь"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//Регулярное выражение, которое будем использовать для поиска</span>

<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regular_expression <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"здесь"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//применяем функцию test(), которая возвращает true или false</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> result <span style="color: rgb(51, 153, 51);">=</span> string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span>regular_expression<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//переменная result имеет значение true</span></pre>
</div>
</div>
<p>По сути, это такой же результат, если бы использовалась функция <strong>contains()</strong>. Однако, в то время, как <strong>contains()</strong> ищет целые слова, <strong>test()</strong> находит вхождения сочетания символов:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_match <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"слово"</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//вернёт false</span>
string_to_match.<span style="color: rgb(102, 0, 102);">contains</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'лов'</span><span style="color: rgb(0, 153, 0);">)</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//вернёт true</span>
string_to_match.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'лов'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p>И ещё обращу внимание на то, что регулярное выражение не будет чувствительным к регистру, если этого явно не указать с помощью специального ключа. Потому, поиск по регулярному выражению «слово», в слове «Слово» вернёт false. Пример:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_demo <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">//определяем функцию обработки</span>

	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_demo_1 <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">//определяем исходный текст</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> test_string <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_1_value'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">get</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'value'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

	<span style="color: rgb(0, 102, 0); font-style: italic;">//определяем регулярное выражение</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_value <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_1_match'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">get</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'value'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

	<span style="color: rgb(0, 102, 0); font-style: italic;">//производим поиск в исходном тексте</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> test_result <span style="color: rgb(51, 153, 51);">=</span> test_string.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span>regex_value<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;

	<span style="color: rgb(0, 102, 0); font-style: italic;">//сообщаем пользователю о текущем положении дел</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span>test_result<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_1_result'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'html'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"Есть совпадение!"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span><span style="color: rgb(0, 153, 0);">}</span>

	<span style="color: rgb(0, 0, 102); font-weight: bold;">else</span> <span style="color: rgb(0, 153, 0);">{</span>$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_1_result'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'html'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"Нет совпадения"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span><span style="color: rgb(0, 153, 0);">}</span>

<span style="color: rgb(0, 153, 0);">}</span>
<span style="color: rgb(0, 153, 0);">}</span></pre>
</div>
</div>
<p>Обращаю внимание на то, что есть некоторые символы, использовать которые нужно очень осторожно. Если использовать один из нижеуказанных символов в примере ниже, это может привести к непредвиденной ошибке и потому, нужно будет перезагрузить страницу, чтобы все примеры страницы работали.</p>
<p>-  .  *  +  ?  ^  $  {  }  (  )  |  [  ]  /  \ </p>
<table style="border: 0px none; border-collapse: collapse;" class="demo" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td>Текст, в котором производим поиск:</td>
<td>
<input id="regex_1_value" size="25" value="Ищем совпадения в этом тексте"/></td>
</tr>
<tr>
<td>Регулярное выражение:</td>
<td>
<input id="regex_1_match" size="25" value="тексте"/></td>
</tr>
<tr>
<td><button id="regex_1_button">Запуск теста</button></td>
<td>
<div id="regex_1_result">&nbsp;</div>
</td>
</tr>
</tbody>
</table>
<h2>Игнорируем регистр</h2>
<p>Существует масса ситуаций, когда нет необходимости, чтобы регулярное выражение было чувствительным к регистру текста. Для того, чтобы это уточнить для функций, работающих с регулярными выражениями, нужно использовать параметр «i», как это указано в следующем примере.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//Строка, в которой будем производить поиск</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_test <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"ИгнОр РЕгИстрУ"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//вернёт false</span>
string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"игнор"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//вернёт true</span>
string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"игнор"</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"i"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p>Функции <strong>test()</strong> можно передать несколько параметров, но, так как JavaScript поддерживает только 3 параметра регулярного выражения (2 из которых включены по умолчанию в функции <strong>test()</strong>), параметр «i», вероятно, единственный, который нужно будет передавать. Ниже, в форме, можете протестировать функцию <strong>test()</strong> с параметром игнорирования регистра.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_demo <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Получить строку для тестирования из поля input</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> test_string <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_value'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">get</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'value'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Получить регулярное выражение из поля input</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_value <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_match'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">get</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'value'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Проверить, требуется ли игнорирование регистра</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_param <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">""</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span>$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_param'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">checked</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>

		regex_param <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"i"</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Произвести поиск и получить результат</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> test_result <span style="color: rgb(51, 153, 51);">=</span> test_string.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span>regex_value<span style="color: rgb(51, 153, 51);">,</span> regex_param<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Обновить приготовленный контейнер для сообщения результатов поиска</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span>test_result<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>
       	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_result'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'html'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"Есть находка! <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> "</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

	<span style="color: rgb(0, 153, 0);">}</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">else</span> <span style="color: rgb(0, 153, 0);">{</span>
       	$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_result'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'html'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"Ничего нет! <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> "</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

	<span style="color: rgb(0, 153, 0);">}</span>
<span style="color: rgb(0, 153, 0);">}</span></pre>
</div>
</div>
<table style="border: 0px none; border-collapse: collapse;" class="demo" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td>Строка, в которой будем искать:</td>
<td>
<input id="regex_2_value" value="ИгнОр РЕгИстрУ" type="text"/></td>
</tr>
<tr>
<td>Определим регулярное выражение:</td>
<td>
<input id="regex_2_match" value="игнор" type="text"/></td>
</tr>
<tr>
<td>Игнор регистру?</td>
<td>
<input id="regex_2_param" type="checkbox"/></td>
</tr>
<tr>
<td><button id="regex_2_button">Запуск теста</button></td>
<td>
<div id="regex_2_result">&nbsp;</div>
</td>
</tr>
</tbody>
</table>
<h2>Интересная часть</h2>
<p>Итак, мы уже просмотрели примеры простого поиска по регулярным выражениям, можно начать смотреть в сторону более сложных выражений. Охватить всю функциональность и возможности регулярных выражений сейчас не получится (да я и не претендую на это), но ознакомиться то «самое, самое», что можно будет использовать в своих простых приложениях, у нас получится. Даже этого должно будет хватить для решения простых задач (меня регуляри не раз спасали – некоторые до сих пор использую в DreamWeaver-е).</p>
<h3>Находим начало строки с помощью оператора «^»</h3>
<p>Оператор «^» при использовании в регулярных выражениях, помогает найти текст в начале строки, вне зависимости от того, существует ли этот текст далее в строке поиска. Установите оператор в начале строки для поиска, вот так:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//Строка, в которой будем производить поиск</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_test <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"поищем в начале текста"</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//тестирует верхний текст на предмет того, начинается ли он с данной строки</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//возвращает true</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> is_true <span style="color: rgb(51, 153, 51);">=</span> string_to_test.<span style="color: rgb(102, 0, 102);">match</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"^поищем"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p>Далее, если выражение не находится в начале текста, этот поиск<br />
вернет, соотвественно, false:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//Строка, в которой будем производить поиск</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_test <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"поищем в начале текста"</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//тестирует верхний текст на предмет того, начинается ли он с данной строки</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//возвращает (удивление) false</span>

<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> is_true <span style="color: rgb(51, 153, 51);">=</span> string_to_test.<span style="color: rgb(102, 0, 102);">match</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"^начал"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p>Эти два примера можно и протестировать здесь:</p>
<table style="border: 0px none; border-collapse: collapse;" class="demo" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td>Строка, в которой будем искать:</td>
<td>
<input id="regex_3_value" size="30" value="будем проверять только начало" type="text"/></td>
</tr>
<tr>
<td>Регулярное выражение:</td>
<td>
<input id="regex_3_match" value="^будем" type="text"/></td>
</tr>
<tr>
<td>Регистру игнор?</td>
<td>
<input id="regex_3_param" type="checkbox"/></td>
</tr>
<tr>
<td><button id="regex_3_button">Пуск…</button></td>
<td>
<div id="regex_3_result">&nbsp;</div>
</td>
</tr>
</tbody>
</table>
<h3>Поиск по концам с помощью оператора «$»</h3>
<p>Этот оператор работает также, как и предыдущий («^»), только с двумя исключениями:</p>
<ol>
<li>Поиск только по концу строк</li>
<li>Устанавливается в конце регулярного выражения</li>
</ol>
<p>В остальном, регЭкспы с этим оператором работают как и ожидается <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   :</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//Строка, в которой будем искать</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_test <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"поиск по концам строк"</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//проверяет, заканчивается ли строка на слово "строк"</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//и возвращает "true"</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> is_true <span style="color: rgb(51, 153, 51);">=</span> string_to_test.<span style="color: rgb(102, 0, 102);">match</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"строка$"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//проверяет, заканчивается ли строка на слово "металлика"</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//и вовращает "false"</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> is_false <span style="color: rgb(51, 153, 51);">=</span> string_to_test.<span style="color: rgb(102, 0, 102);">match</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"металлика$"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p>Используя оба этих оператора, можно протестировать исходный текст на полное совпадение с регулярным выражением:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//Исходная строка</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_test <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"проверим на полное совпадение"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//Проверяет на полное совпадение со строкой "проверим на полное совпадение"</span>

<span style="color: rgb(0, 102, 0); font-style: italic;">//возвращает true</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> is_true <span style="color: rgb(51, 153, 51);">=</span> string_to_test.<span style="color: rgb(102, 0, 102);">match</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"^проверим на полное совпадение$"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//Проверяет на полное совпадение со строкой "проверим на полное совпадение"</span>

<span style="color: rgb(0, 102, 0); font-style: italic;">//возвращает false</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> is_false <span style="color: rgb(51, 153, 51);">=</span> string_to_test.<span style="color: rgb(102, 0, 102);">match</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"^проверим на совпадение$"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<table style="border: 0px none; border-collapse: collapse;" class="demo" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td>Исходная строка:</td>
<td>
<input id="regex_4_value" value="проверим на полное соответствие" size="30" type="text"/></td>
</tr>
<tr>
<td>Регулярное выражение:</td>
<td>
<input id="regex_4_match" value="^проверим на полное соответствие$" size="30" type="text"/></td>
</tr>
<tr>
<td>Игнор регистру?</td>
<td>
<input id="regex_4_param" type="checkbox"/></td>
</tr>
<tr>
<td><button id="regex_4_button">Запуск теста…</button></td>
<td>
<div id="regex_4_result">&nbsp;</div>
</td>
</tr>
</tbody>
</table>
<h3>Классы символов</h3>
<p>Классы символов – это ещё один инструмент регулярных выражений (жутко полезный, нужно заметить), позволяющий производить поиск нескольких определенных символов («А» или «Я», «f» или «r») или символов из определенного диапазона (от «A» до «Z» или от «r» до «z»). Если, например, есть необходимость проверить строку на наличие слов «бее» или «мее», мы заключаем две первые буквы этих слов в [квадратные] скобки, таким образом формируя класс символов и использовать следующее регулярное выражение:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//строка, в которой будем искать слово "мее"</span>

<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> first_string_to_test <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"овцы разговаривают словом мее"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//строка, в которой будем искать слово "бее"</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> second_string_to_test <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"козы разговаривают словом бее"</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//это выражение найдет совпадение в первой строке, но не во второй</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> returns_true <span style="color: rgb(51, 153, 51);">=</span> first_string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"мее"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> returns_false <span style="color: rgb(51, 153, 51);">=</span> second_string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"мее"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//следующее найдет совпадение во второй строке, но не в первой</span>
returns_false <span style="color: rgb(51, 153, 51);">=</span> first_string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"бее"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
returns_true <span style="color: rgb(51, 153, 51);">=</span> second_string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"бее"</span><span style="color: rgb(0, 153, 0);">)</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//следующее найдет совпадение в обеих строках</span>
returns_true <span style="color: rgb(51, 153, 51);">=</span> first_string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"[мб]ее"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
returns_true <span style="color: rgb(51, 153, 51);">=</span> second_string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"[мб]ее"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<table style="border: 0px none; border-collapse: collapse;" class="demo" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td>Первая строка, в которой будем искать:</td>
<td>
<input id="regex_5_value_1" size="30" value="овцы разговаривают словами мее" type="text"/></td>
<td>
<div id="regex_5_result_1">&nbsp;</div>
</td>
</tr>
<tr>
<td>Вторая строка, в которой будем искать:</td>
<td>
<input id="regex_5_value_2" size="30" value="козы разговаривают словами бее" type="text"/></td>
<td>
<div id="regex_5_result_2">&nbsp;</div>
</td>
</tr>
<tr>
<td>РегЭксп:</td>
<td>
<input id="regex_5_match" value="[мб]ее" type="text"/></td>
<td>&nbsp;</td>
</tr>
<tr>
<td>Игнор регистру?</td>
<td>
<input id="regex_5_param" type="checkbox"/></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><button id="regex_5_button">Пуск…</button></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</tbody>
</table>
<p>Для того, чтобы использовать диапазон символов для поиска, нужно лишь указать начальную и окончательную точку диапазона, разделив их дефисом («-»). Так можно определять диапазоны как цифр, так и букв, причем необязательно ограничиваться латинскими: кириллические символы также хорошо понимаются движком регулярных выражений, как и латинские. Хотя, стоит оговориться, что букву «ё» движок регулярных выражений не понимает, хотя, возможно я чего-то не знаю (буду благодарен, если кто-нибудь ткнет меня носом в проблему <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   ) .</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//строка, в которой будем искать</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_test  <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">" b, д или 3"</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//поиск символов a, b, c, или d. Вернёт true.</span>
string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"[a-d]"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//поиск по символам г, д, е, ж или з. Вернёт true.</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//Обратите внимание, "ё" в списке нет. "ё" не находится. Почему, пока не знаю...</span>
string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"[г-з]"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//поиск 1, 2, 3, 4 или 5. Вернёт true.</span>
string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"[1-5]"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p>Если необходимо искать несколько классов символов, нужно будет заключить такие классы в свои собственные [квадратные] скобки и разделить их логическим оператором «|» (OR – или). Таким образом, у нас появляется регулярное выражение с использованием вложенных квадратных скобок.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//строка, в которой будем искать</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_test  <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"b, д или 3"</span><span style="color: rgb(51, 153, 51);">;</span>

<span style="color: rgb(0, 102, 0); font-style: italic;">//Вернёт true, так как все три выражения верны.</span>
string_to_test.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"[a-d] | [г-з] | [1-5]"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p>Вот пример, в котором можно немного поиграться с полями: воодите туда любой текст, кликайте по соответствующим кнопка регЭкспа и следите за тем, что возвращает true, а что false. «Да прибудет с тобой сила!» <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
<table style="border: 0px none; border-collapse: collapse;" class="demo" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td>Первая строка, в которой будем искать:</td>
<td>
<input id="regex_6_value_1" size="30" value="b" type="text"/></td>
<td>
<div id="regex_6_result_1">&nbsp;</div>
</td>
</tr>
<tr>
<td>Вторая строка, в которой будем искать:</td>
<td>
<input id="regex_6_value_2" size="30" value="3" type="text"/></td>
<td>
<div id="regex_6_result_2">&nbsp;</div>
</td>
</tr>
<tr>
<td>Третья строка, в которой будем искать:</td>
<td>
<input id="regex_6_value_3" size="30" value="д" type="text"/></td>
<td>
<div id="regex_6_result_3">&nbsp;</div>
</td>
</tr>
<tr>
<td>РегЭксп:</td>
<td>
<input id="regex_6_match" value="[a-d]" type="text"/></td>
<td>&nbsp;</td>
</tr>
<tr>
<td>Игнор регистру?</td>
<td>
<input id="regex_6_param" type="checkbox"/></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><button id="regex_6_button">Поехали…</button></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="3">
<form id="searchWhat_6" action="">
<input value="[a-d]" name="regexp_demo_6" id="eng" type="radio"/><label for="eng">[a-d]</label>&nbsp;</p>
<input value="[г-з]" name="regexp_demo_6" id="rus" type="radio"/><label for="rus">[г-з]</label>&nbsp;</p>
<input value="[1-5]" name="regexp_demo_6" id="num" type="radio"/><label for="num">[1-5]</label>&nbsp;</p>
<input value="[a-d]|[г-з]|[1-5]" name="regexp_demo_6"  id="searchAll" type="radio"/><label for="searchAll">[a-d]|[г-з]|[1-5]</label><br />
      </form>
</td>
</tr>
</tbody>
</table>
<h3><a name="escape"></a> escapeRegExp()</h3>
<p>Если ты, о читатель моего поста про регулярные выражения, дочитал до сего момента, и о тебе можно сказать, что ты человек с логическим типом мышления, то ты наверняка заметил, использование многочиленных специальных символов в определении регулярного выражения, например классов символов или его логики (ИЛИ – «<strong>|</strong>«, в начале строки – «<strong>^</strong>«, в конце строки – «<strong>$</strong>» и т.д.). Ты ведь наверняка уже понял, что все эти символы сильно затрудняют поиск самих специальных символов в определенной строке… На первый взгляд. А на второй взгляд, все что нужно сделать, это экранировать специальные символы другим специальным символом – обратный слэш «<strong>\</strong>«, а если нужно искать сам обратный слэш, то используются два обратных слэша «<strong>\\</strong>«. Логика проста, если не думатьо ней <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  !</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//Строка для поиска. Обратите внимание на специальные символы [ ] - и $</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> string_to_match <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"[всякий-разный-текст] или $300"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//Было бы неправильно составить такое регулярное выражение</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//потому что движок будет их воспринимать, как специальные символы</span>
<span style="color: rgb(0, 102, 0); font-style: italic;">//а нам этого не нужно</span>

string_to_match.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"[всякий-разный-текст]"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
string_to_match.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"$300"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//Правильно было бы так:</span>

<span style="color: rgb(0, 102, 0); font-style: italic;">//обратите внимание на обратный слэш \ перед символами [ ] - и $</span>
string_to_match.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"<span style="color: rgb(0, 0, 153); font-weight: bold;">\[</span>stuff<span style="color: rgb(0, 0, 153); font-weight: bold;">\-</span>in<span style="color: rgb(0, 0, 153); font-weight: bold;">\-</span>here<span style="color: rgb(0, 0, 153); font-weight: bold;">\]</span>"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

string_to_match.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">"<span style="color: rgb(0, 0, 153); font-weight: bold;">\$</span>300"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span></pre>
</div>
</div>
<p>Когда регулярное выражение не большое, не составит особого труда экранировать каждый спец. символ. Но с другой стороны никто не отменял банальной человеческой невнимательности (которая у меня, например, хроническая), и такой специальный символ можно просто упустить из виду, или же, на стадиях своего обучения, можно и не подозревать, что ты пропустил специальный символ, не экранировал его и регЭксп не дает нужного результата. На всякий случай, если запомните сразу, вот специальные, рабочие символы регулярных выражений, которые <strong>НУЖНО</strong> экранировать:</p>
<p style="text-align: center;">- . * + ? ^ $ { } ( ) | [ ] / \</p>
<p>К счастью, Mootools – это не та библиотека, которая позволит своему пользователю бездарно убивать время на экранирование каждого рабочего символа, когда есть такая функция, как <strong>escapeRegExp()</strong>, чья работа – это избавить тебя, о начинающий программист, от экранирования специальных символов в регулярном выражении. Эта функция работает с любой строкой, потому ее можно использовать всегда, когда нужно произвести поиск какого-либо текста.</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//Нужно экранировать</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> unescaped_regex_string <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"[текст-регулярного-выражения]"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//Экранируем строку</span>

<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> escaped_regex_string <span style="color: rgb(51, 153, 51);">=</span> unescaped_regex_string.<span style="color: rgb(102, 0, 102);">escapeRegExp</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//escaped_regex_string стала такой: "\[текст\-регулярного\-выражения\]"</span></pre>
</div>
</div>
<p>Обратите внимание, что это значит, что любой специальный символ, который нужно использовать в регулярном выражении, нужно добавить к регулярному выражению после использования функции <strong>escapeRegExp()</strong>:</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 102, 0); font-style: italic;">//Строка, которую нужно экранировать</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> unescaped_regex_string <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"[текст-регулярного-выражения]"</span><span style="color: rgb(51, 153, 51);">;</span>
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//Экранировать строку, для поиска по началу строки</span>
<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> escaped_regex_string <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"^"</span> <span style="color: rgb(51, 153, 51);">+</span> unescaped_regex_string.<span style="color: rgb(102, 0, 102);">escapeRegExp</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
&nbsp;
<span style="color: rgb(0, 102, 0); font-style: italic;">//переменная escaped_regex_string стала такой:  "^\[текст\-регулярного\-выражения\]"</span></pre>
</div>
</div>
<p>Ниже представлен пример, в котором видна разница между использованием и неиспользованием функции escapeRegExp():</p>
<div class="wp_syntax">
<div class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_demo <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(0, 51, 102); font-weight: bold;">function</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>

	<span style="color: rgb(0, 102, 0); font-style: italic;">//Получаем строку для проверки</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> test_string <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_7_value'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">get</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'value'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Получаем регулярное выражение</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_value <span style="color: rgb(51, 153, 51);">=</span> $<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_7_match'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">get</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'value'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Проверяем, нужно ли экранировать текст</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span>$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_7_escape'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">checked</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>

		<span style="color: rgb(0, 102, 0); font-style: italic;">//Если да, применяем соотв. функцию</span>
		regex_value <span style="color: rgb(51, 153, 51);">=</span> regex_value.<span style="color: rgb(102, 0, 102);">escapeRegExp</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;

	<span style="color: rgb(0, 102, 0); font-style: italic;">//Определяем параметры регулярного выражения</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> regex_param <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">""</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Проверяет, нужно ли игнорировать регистр</span>
	<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span> <span style="color: rgb(0, 153, 0);">(</span>$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_7_param'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">checked</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>

		regex_param <span style="color: rgb(51, 153, 51);">=</span> <span style="color: rgb(51, 102, 204);">"i"</span><span style="color: rgb(51, 153, 51);">;</span>
	<span style="color: rgb(0, 153, 0);">}</span>
&nbsp;
	<span style="color: rgb(0, 102, 0); font-style: italic;">//Запуск теста</span>
	<span style="color: rgb(0, 51, 102); font-weight: bold;">var</span> test_result <span style="color: rgb(51, 153, 51);">=</span> test_string_1.<span style="color: rgb(102, 0, 102);">test</span><span style="color: rgb(0, 153, 0);">(</span>regex_value<span style="color: rgb(51, 153, 51);">,</span> regex_param<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span>

	<span style="color: rgb(0, 0, 102); font-weight: bold;">if</span>      <span style="color: rgb(0, 153, 0);">(</span>test_result<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span>$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_7_result'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'html'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"Есть совпадения"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span><span style="color: rgb(0, 153, 0);">}</span>

	<span style="color: rgb(0, 0, 102); font-weight: bold;">else</span> <span style="color: rgb(0, 153, 0);">{</span>$<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'regex_7_result'</span><span style="color: rgb(0, 153, 0);">)</span>.<span style="color: rgb(102, 0, 102);">set</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(51, 102, 204);">'html'</span><span style="color: rgb(51, 153, 51);">,</span> <span style="color: rgb(51, 102, 204);">"Нет совпадений!"</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(51, 153, 51);">;</span><span style="color: rgb(0, 153, 0);">}</span>

<span style="color: rgb(0, 153, 0);">}</span></pre>
</div>
</div>
<table>
<tbody>
<tr>
<td>Строка, в которой будем производить поиск:</td>
<td>
<input id="regex_7_value" value="[слово] или $400" type="text"/></td>
</tr>
<tr>
<td>Регялурное выражение: </td>
<td>
<input id="regex_7_match" value="$400" type="text"/></td>
</tr>
<tr>
<td>использовать escapeRegExp():</td>
<td>
<input id="regex_7_escape" type="checkbox"/></td>
</tr>
<tr>
<td>Игнор регистру:</td>
<td>
<input id="regex_7_param" type="checkbox"/></td>
</tr>
<tr>
<td><button id="regex_7_button">Запуск теста…</button></td>
<td>
<div id="regex_7_result">&nbsp;</div>
</td>
</tr>
</tbody>
</table>
<p>Помните, что все примеры можно «сломать», если использовать неэкранированные специальные символы. Потому, если вдруг случается, что что-то перестало работать, после того, как только что это работало – не удивляйтесь, а просто перезагрузите страницу <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  .</p>
<p>Если все пойдет по плану, то у меня на готовке еще несколь интересных материалов и уроков, потому не забудьте <a href="http://feeds.feedburner.com/Beginners-Programming-Training">подписаться на мою RSS ленту</a>.</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/regulyarnye-vyrazheniya-urok-13.html/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Поиск RegExp в документе, с последующей отправкой данных на сервер</title>
		<link>http://php.infoniac.ru/kak-ya-iskal-regexp-v-dokumente.html</link>
		<comments>http://php.infoniac.ru/kak-ya-iskal-regexp-v-dokumente.html#comments</comments>
		<pubDate>Tue, 23 Mar 2010 09:37:30 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[RegExp]]></category>
		<category><![CDATA[практические задачи]]></category>
		<category><![CDATA[регулярные выражения]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=639</guid>
		<description><![CDATA[Недавно мой очень хороший знакомый попросил меня написать небольшой скрипт, который бы мог находить на загружаемой странице сайта определенное регулярное выражение и записывать вхождение в базу данных на сервере. Как только я услышал задачу, понял, что без AJAX тут никак. Пока с AJAXом у меня очень посредственные отношения: я написал только один полускрипт, который состоял [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Недавно мой очень хороший знакомый попросил меня написать небольшой скрипт, который бы мог находить на загружаемой странице сайта определенное регулярное выражение и записывать вхождение в базу данных на сервере. Как только я услышал задачу, понял, что без AJAX тут никак. <span id="more-639"></span>Пока с AJAXом у меня очень посредственные отношения: я написал только один полускрипт, который состоял в том, что при выборе категории товара на сайте подгружались подкатегории и товары этой супер категории, а при выборе подкатегории, выбирались товары только этой одной подкатегории и все это было выполнено в виде выпадающих списков &lt;input type=&#8221;option&#8221;&gt;&#8230; Итак, тот первый полускрипт я написал на чистом JavaScript с помощью XMLHttpRequest (XHR) и, конечно же, не без помощи w3school.org.</p>
<p>В этой задаче мне пришлось также столкнуться с объектом RegExp JavaScript. Я немного потренировался в его использовании, что, несомненно пошло мне на пользу. Например, я узнал, что для того, чтобы использовать РегЭксп-ы, не обязательно объявлять переменную, новый экземпляр объекта RegExp, а можно просто записать регулярное выражение в виде текcтовой строки, т.е. вместо</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> r <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Regexp<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.*'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'g'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>можно просто написать вот так:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> r <span style="color: #339933;">=</span> <span style="color: #3366CC;">'/.*/g'</span><span style="color: #339933;">;</span></pre></div></div>

<p>Но, обратите внимание, что при использовании конструкции new RegExp использовать обратные слэши не нужно, т.к. при работе с регулярным выражением, объявленным таким образом, обработчик сам добавит недостающие символы. Также, в этом примере видно, что ключи к РегЭксп-у идут отдельным параметром к объекту, тогда как при составлении выражения в текстовой строке, ключ просто добавляется в конце регулярного выражения. В общем, если регулярное выражение просо записывается в строку, то и составляется оно по всем правилам составления регулярных выражений.</p>
<p>Ключ &#8216;g&#8217; говорит обработчику, что не нужно останавливаться после первого вхождения регулярного выражения, а нужно искать по всему тексту, но простого указания этого ключа, как оказалось, совсем не достаточно.</p>
<p>В отличие от РНР, где функция preg_match_all записывает все вхождения в массив самостоятельно, для того, чтобы проделать тоже самое в JavaScript мне пришлось ускорить седение волос на голове:) Оказалось, что для поиска всех вхождений в документе с помощью JavaScript, нужно написать код такого плана:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">r <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> RegExp<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'.*text-([0-9]+).*'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'g'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
res <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span>res <span style="color: #339933;">=</span> r.<span style="color: #660066;">exec</span><span style="color: #009900;">&#40;</span>s<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> i <span style="color: #339933;">=</span> r.<span style="color: #660066;">lastIndex</span><span style="color: #339933;">;</span>
	<span style="color: #006600; font-style: italic;">// сюда вставляем код, который должен выполняться при нахождении регулярного выражения</span>
	<span style="color: #006600; font-style: italic;">// это может быть запить найденного в переменную или ещё что-нибудь</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>где <em>res</em> – массив в который записываются результаты поиска, где, в свою очередь, <em>res[<span style="color:red;">0</span>]</em> будет содержать вхождение всего регулярного выражения, <em>res[<span style="color:red;">1</span>]</em> будет содержать вхождение в первой группе скобок, <em>res[<span style="color:red;">2</span>]</em> – во второй и т.д.<br />
<em>r</em> – экземпляр регулярного выражения;<br />
<em>exec()</em> – метод объекта RegExp, который находит вхождения, соответствующие регулярному выражению и записывает их в массив. <em>exec()</em> отличается от <em>test()</em> тем, что записывает данные в массив, тогда как <em>test()</em> просто возвращает true если находит вхождение или false если не находит. Если же предпочитаете работать не с объектом, а с текстовой строкой, которая содержит РегЭксп, то используйте обычные методы match() – аналог exec(), или search() – почти аналог test(), с тем отличием, что возвращает позицию начала вхождения.</p>
<p>Тут потребуется небольшая оговорка по поводу использования search(): так как он возвращает число, а не булев тип (true/false), при отсутствии вхождения этот метод возвращает -1.</p>
<p>Кстати, при использовании просто текстовой строки для хранения РегЭксп-а, можно также использовать метод replace(), который находит вхождение регулярного выражения, или обычного текста, и заменяет на указанный в параметре текст.</p>
<p>Идем далее: <em>s</em> – источник поиска, т.е. где будем искать.<br />
<em>.lastIndex</em> – параметр, отвечающий за позицию, где было найдено последнее вхождение. Если этот параметр не указать, обработчик JavaScript найдет только первое вхождение, даже при указании ключа &#8216;g&#8217;.</p>
<p>Далее, часть Ajax. На сайте этого моего товарища уже были подключены Prototype и jQuery, потому, я решил не подключать еще и Mootools к этому салату (вначале думал подключить, так как только с ним и знаком). Решил просто посмотреть документацию по этим библиотекам, чтобы понять, какой из них лучше воспользоваться для составления пакета и отправки на скрипт сервера. Оказалось, что проще, чем это предлагает сделать jQuery, не получится!</p>

<div class="wp_syntax"><div class="code"><pre class="jquery" style="font-family:monospace;"><span style="color: #000066;">$</span>.<span style="color: #000066;">post</span><span style="color: #009900;">&#40;</span>ServerSideScriptUrl<span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>var1<span style="color: #339933;">:</span>value1<span style="color: #339933;">,</span> val2<span style="color: #339933;">:</span>val2 ...<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span></pre></div></div>

<p>Как видно из этого, вообще ничего проще нет. Спасибо jQuery!! Знакомый до боли селектор из Mootools $, потом указываем метод отправки – get/post, и несколько параметров. Конечно, в моем скрипте, требовалось лишь отправить данные, без их последующего приема, потому мне именно вариант jQuery показался самым простым. К сожалению, массивы с данными через XHR отправить не получится, но форма передачи данных на сервер, указанная выше, вполне справится с задачей передачи вполне большого объема данных.</p>
<p>Думаю, на этом и хватит описывать мой героический скрипт <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  РНР скрипт на стороне сервера даже описывать не буду, т.к. это скрипт на уровне первого класса (выполнен, тоже на уровне первого класса): получил данные, подключился к БД, записал в таблицу. Всё!</p>
<p>Конечно, это не большое достижение, но, все-таки – достижение. А тот факт, что я это все описал в этом посте, еще больше закрепит эти знания в моем прогламмерском мозгу.</p>
<p>Кстати, на фоне моего поста, посвященного первой решенной практической задачке, объявляю акцию:</p>
<blockquote style="color:red; font-size:14px; font-weight:bold;"><p>Если вы учитесь программированию и решаете какие-либо задачи, присылайте их мне, буду их с удовольствием публиковать на рассмотрение всех посетителей блога. Думаю, они будут интересны не только мне!</p></blockquote>
<p>Удачи!</p>
<p style="font-style:italic">P.S. Ух! Сколько ж раз я повторяю это слово в своих постах&#8230; со счета сбился&#8230; Но, КСТАТИ! Мой следующий урок Mootools посвещается именно работе с регулярными выражениями, так что НЕ пропустите!</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/kak-ya-iskal-regexp-v-dokumente.html/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

