<?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>Fix Blog &#187; js</title>
	<atom:link href="http://fixblog.ru/tag/js/feed/" rel="self" type="application/rss+xml" />
	<link>http://fixblog.ru</link>
	<description>в помощь веб-мастерам</description>
	<lastBuildDate>Fri, 03 Jun 2011 05:32:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>проверка формы javascript</title>
		<link>http://fixblog.ru/2010/04/14/%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b0-%d1%84%d0%be%d1%80%d0%bc%d1%8b-javascript/</link>
		<comments>http://fixblog.ru/2010/04/14/%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b0-%d1%84%d0%be%d1%80%d0%bc%d1%8b-javascript/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 14:05:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[validate]]></category>

		<guid isPermaLink="false">http://fixblog.ru/?p=313</guid>
		<description><![CDATA[Задача: сделать универсальную функцию для прохождения по полям формы с возможностью проверки введенных данных

Действительно, удобнее проверять форму пока она не "ушла" на сервер, чем после отправки возвращать пользователю HTML-страницу с той же формой и списком ошибок (хотя серверная проверка необходима, из соображений безопасности и на случай отключенного JavaScript). Попытаемся набросать JavaScript-функцию, которая будет проходить по [...]]]></description>
			<content:encoded><![CDATA[<p>Задача: сделать универсальную функцию для прохождения по полям формы с возможностью проверки введенных данных<br />
<span id="more-313"></span><br />
Действительно, удобнее проверять форму пока она не "ушла" на сервер, чем после отправки возвращать пользователю HTML-страницу с той же формой и списком ошибок (хотя серверная проверка необходима, из соображений безопасности и на случай отключенного JavaScript). Попытаемся набросать JavaScript-функцию, которая будет проходить по всем элементам формы, определять их тип и совершать действия по проверке данных. В качестве аргумента функция примет ссылку на саму форму. Удобнее всего её вызывать по событию onsubmit.</p>
<p>Форма:</p>
<p>&lt;form onsubmit="return checkForm(this);"&gt;<br />
&lt;input type="hidden" /&gt;<br />
Имя: &lt;input type="text" name="name" /&gt;&lt;br/&gt;<br />
E-mail: &lt;input type="text" name="email" /&gt;&lt;br/&gt;<br />
&lt;br/&gt;<br />
Интересы:&lt;br/&gt;<br />
&lt;input type="checkbox" name="inter[]" value="music" /&gt; Music&lt;br/&gt;<br />
&lt;input type="checkbox" name="inter[]" value="TV" /&gt; TV&lt;br/&gt;<br />
&lt;br/&gt;<br />
Возраст:&lt;br/&gt;<br />
&lt;input type="checkbox" name="age" value="10-25&#8243; /&gt; 10-25&lt;br/&gt;<br />
&lt;input type="checkbox" name="age" value="25-50&#8243; /&gt; 25-50&lt;br/&gt;<br />
&lt;input type="checkbox" name="age" value="50+" /&gt; 50+&lt;br/&gt;<br />
&lt;br/&gt;<br />
Любимое время суток: &lt;br/&gt;<br />
&lt;select&gt;<br />
&lt;option value="0&#8243; selected="1&#8243;&gt;Выберите&#8230;&lt;/option&gt;<br />
&lt;option value="1&#8243;&gt;Утро&lt;/option&gt;<br />
&lt;option value="2&#8243;&gt;День&lt;/option&gt;<br />
&lt;option value="3&#8243;&gt;Вечер&lt;/option&gt;<br />
&lt;option value="4&#8243;&gt;Ночь&lt;/option&gt;<br />
&lt;/select&gt;&lt;br/&gt;<br />
&lt;br/&gt;<br />
Комментарий:&lt;br/&gt;<br />
&lt;textarea&gt;&lt;/textarea&gt;&lt;br/&gt;<br />
&lt;br/&gt;<br />
Прикрепить файл:&lt;br/&gt;<br />
&lt;input type="file" name="name" /&gt;&lt;br/&gt;<br />
&lt;br/&gt;<br />
&lt;input type="submit" value="Отправить" /&gt;<br />
&lt;/form&gt;</p>
<p>В форму вошло максималное число разнообразных полей.<br />
Теперь код JavaScript-функции:</p>
<p>function checkForm(form) {<br />
// Заранее объявим необходимые переменные<br />
var el, // Сам элемент<br />
elName, // Имя элемента формы<br />
value, // Значение<br />
type; // Атрибут type для input-ов<br />
// Массив списка ошибок, по дефолту пустой<br />
var errorList = [];<br />
// Хэш с текстом ошибок (ключ &#8211; ID ошибки)<br />
var errorText = {<br />
1 : "Не заполнено поле &#8216;Имя&#8217;",<br />
2 : "Не заполнено поле &#8216;E-mail&#8217;",<br />
3 : "Не прикреплен файл",<br />
4 : "Не оставлен комментарий",<br />
5 : "Не выбрано любимое время суток"<br />
}<br />
// Получаем семейство всех элементов формы<br />
// Проходимся по ним в цикле<br />
for (var i = 0; i &lt; form.elements.length; i++) {<br />
el = form.elements[i];<br />
elName = el.nodeName.toLowerCase();<br />
value = el.value;<br />
if (elName == "input") { // INPUT<br />
// Определяем тип input-а<br />
type = el.type.toLowerCase();<br />
// Разбираем все инпуты по типам и обрабатываем содержимое<br />
switch (type) {<br />
case "text" :<br />
if (el.name == "name" &amp;&amp; value == "") errorList.push(1);<br />
if (el.name == "email" &amp;&amp; value == "") errorList.push(2);<br />
break;<br />
case "file" :<br />
if (value == "") errorList.push(3);<br />
break;<br />
case "checkbox" :<br />
// Ничего не делаем, хотя можем<br />
break;<br />
case "radio" :<br />
// Ничего не делаем, хотя можем<br />
break;<br />
default :<br />
// Сюда попадают input-ы, которые не требуют обработки<br />
// type = hidden, submit, button, image<br />
break;<br />
}<br />
} else if (elName == "textarea") { // TEXTAREA<br />
if (value == "") errorList.push(4);<br />
} else if (elName == "select") { // SELECT<br />
if (value == 0) errorList.push(5);<br />
} else {<br />
// Обнаружен неизвестный элемент <img src='http://fixblog.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
}<br />
}<br />
// Финальная стадия<br />
// Если массив ошибок пуст &#8211; возвращаем true<br />
if (!errorList.length) return true;<br />
// Если есть ошибки &#8211; формируем сообщение, выовдим alert<br />
// и возвращаем false<br />
var errorMsg = "При заполнении формы допущены следующие ошибки:\n\n";<br />
for (i = 0; i &lt; errorList.length; i++) {<br />
errorMsg += errorText[errorList[i]] + "\n";<br />
}<br />
alert(errorMsg);<br />
return false;<br />
}</p>
<p>Как видно из скрипта, он не подходит для всех случаев, а по-другому и быть не может. Требования к проверке каждой формы индивидуальны. Однако, незначительная модификация условий в этой функции позволит проверить передаваемые данные из любой формы.</p>
]]></content:encoded>
			<wfw:commentRss>http://fixblog.ru/2010/04/14/%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b0-%d1%84%d0%be%d1%80%d0%bc%d1%8b-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javascript проверка e mail</title>
		<link>http://fixblog.ru/2010/04/14/javascript-%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b0-e-mail/</link>
		<comments>http://fixblog.ru/2010/04/14/javascript-%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b0-e-mail/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 14:04:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[validate]]></category>

		<guid isPermaLink="false">http://fixblog.ru/?p=311</guid>
		<description><![CDATA[Например у нас есть поле для ввода емайла. Но мы не хотим чтобы нам  туда вводили всякую ерунду. Поэтому неплохо бы проверять вводимые  данные.
Ниже представлен HTML код самой формы:
&#60;form onsubmit="return  checkmail(this.email.value)" action="#" method="post"&#62;
&#60;input id="email" name="email" /&#62;
&#60;input type="submit" value="Отправить"  /&#62;
&#60;/form&#62;
И код функции на JavaScript, которая и проверяет email.
&#60;script language="javascript"  type="text/javascript"&#62;
function checkmail(value) {
reg = [...]]]></description>
			<content:encoded><![CDATA[<p>Например у нас есть поле для ввода емайла. Но мы не хотим чтобы нам  туда вводили всякую ерунду. Поэтому неплохо бы проверять вводимые  данные.</p>
<p><span id="more-311"></span>Ниже представлен HTML код самой формы:</p>
<p><span style="font-family: Arial;">&lt;form onsubmit="return  checkmail(this.email.value)" action="#" method="post"&gt;<br />
&lt;input id="email" name="email" /&gt;<br />
</span><span style="font-family: Arial;">&lt;input type="submit" value="Отправить"  /&gt;<br />
&lt;/form&gt;</span></p>
<p>И код функции на JavaScript, которая и проверяет email.</p>
<p><span style="font-family: Arial;">&lt;script language="javascript"  type="text/javascript"&gt;<br />
</span><span style="font-family: Arial;">function checkmail(value) {<br />
</span><span style="font-family: Arial;">reg =  /[a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;<br />
if (!value.match(reg)) {alert("Пожалуйста, введите свой настоящий  e-mail");<br />
document.getElementById(&#8216;email&#8217;).value=""; return false; }<br />
}<br />
</span><span style="font-family: Arial;">&lt;/script&gt;</span></p>
<p>Впринципе если не хотите вникать в суть дела, можете просто  скопирвать код, всё будет работать <img src='http://fixblog.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://fixblog.ru/2010/04/14/javascript-%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b0-e-mail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javascript время и дата</title>
		<link>http://fixblog.ru/2010/04/14/javascript-%d0%b2%d1%80%d0%b5%d0%bc%d1%8f-%d0%b8-%d0%b4%d0%b0%d1%82%d0%b0/</link>
		<comments>http://fixblog.ru/2010/04/14/javascript-%d0%b2%d1%80%d0%b5%d0%bc%d1%8f-%d0%b8-%d0%b4%d0%b0%d1%82%d0%b0/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 14:00:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://fixblog.ru/?p=308</guid>
		<description><![CDATA[Табличка JavaScript функций, работающих со временем




Фукнция
Описание
Возвращает


getDate()
getUTCDate()
День месяца
1-31


getDay()
getUTCDay()
День недели
0-6


getFullYear()
getUTCFullYear()
Год
1900+


getHours()
getUTCHours()
Час
0-23


getMilliseconds()
getUTCMilliseconds()
Милисекунды
0-999


getMinutes()
getUTCMinutes()
Минуты
0-59


getMonth()
getUTCMonth()
Месяц
0-11


getSeconds()
getUTCSeconds()
Секунды
0-59


getTime()
Милисекунды начиная с 1 января 1970



getTimezoneOffset()
Разница между локальным временем и GMT
0-1439


getYear()
Год
0-99 для годов 1900-1999
4 значные для 2000+


toGMTString()
toUTCString()
GMT время и дата string
dd mmm yyyy hh:mm:ss GMT


toLocaleString()
Локальное время string



toString()
Локальное время string








Локальное время string




]]></description>
			<content:encoded><![CDATA[<p>Табличка JavaScript функций, работающих со временем</p>
<p><span id="more-308"></span></p>
<table border="1" cellspacing="0" width="90%" bordercolor="#cccccc">
<tbody>
<tr bgcolor="#cccccc">
<td width="33%" valign="TOP"><strong>Фукнция</strong></td>
<td width="33%" valign="TOP"><strong>Описание</strong></td>
<td width="33%" valign="TOP"><strong>Возвращает</strong></td>
</tr>
<tr>
<td width="33%" valign="TOP">getDate()<br />
getUTCDate()</td>
<td width="33%" valign="TOP">День месяца</td>
<td width="33%" valign="TOP">1-31</td>
</tr>
<tr>
<td width="33%" valign="TOP">getDay()<br />
getUTCDay()</td>
<td width="33%" valign="TOP">День недели</td>
<td width="33%" valign="TOP">0-6</td>
</tr>
<tr>
<td width="33%" valign="TOP">getFullYear()<br />
getUTCFullYear()</td>
<td width="33%" valign="TOP">Год</td>
<td width="33%" valign="TOP">1900+</td>
</tr>
<tr>
<td width="33%" valign="TOP">getHours()<br />
getUTCHours()</td>
<td width="33%" valign="TOP">Час</td>
<td width="33%" valign="TOP">0-23</td>
</tr>
<tr>
<td width="33%" valign="TOP">getMilliseconds()<br />
getUTCMilliseconds()</td>
<td width="33%" valign="TOP">Милисекунды</td>
<td width="33%" valign="TOP">0-999</td>
</tr>
<tr>
<td width="33%" valign="TOP">getMinutes()<br />
getUTCMinutes()</td>
<td width="33%" valign="TOP">Минуты</td>
<td width="33%" valign="TOP">0-59</td>
</tr>
<tr>
<td width="33%" valign="TOP">getMonth()<br />
getUTCMonth()</td>
<td width="33%" valign="TOP">Месяц</td>
<td width="33%" valign="TOP">0-11</td>
</tr>
<tr>
<td width="33%" valign="TOP">getSeconds()<br />
getUTCSeconds()</td>
<td width="33%" valign="TOP">Секунды</td>
<td width="33%" valign="TOP">0-59</td>
</tr>
<tr>
<td width="33%" valign="TOP">getTime()</td>
<td width="33%" valign="TOP">Милисекунды начиная с 1 января 1970</td>
<td width="33%" valign="TOP"></td>
</tr>
<tr>
<td width="33%" valign="TOP">getTimezoneOffset()</td>
<td width="33%" valign="TOP">Разница между локальным временем и GMT</td>
<td width="33%" valign="TOP">0-1439</td>
</tr>
<tr>
<td width="33%" valign="TOP">getYear()</td>
<td width="33%" valign="TOP">Год</td>
<td width="33%" valign="TOP">0-99 для годов 1900-1999<br />
4 значные для 2000+</td>
</tr>
<tr>
<td width="33%" valign="TOP">toGMTString()<br />
toUTCString()</td>
<td width="33%" valign="TOP">GMT время и дата string</td>
<td width="33%" valign="TOP">dd mmm yyyy hh:mm:ss GMT</td>
</tr>
<tr>
<td width="33%" valign="TOP">toLocaleString()</td>
<td width="33%" valign="TOP">Локальное время string</td>
<td width="33%" valign="TOP"></td>
</tr>
<tr>
<td width="33%" valign="TOP">toString()</td>
<td width="33%" valign="TOP">Локальное время string</td>
<td width="33%" valign="TOP"></td>
</tr>
</tbody>
</table>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 555px; width: 1px; height: 1px; overflow: hidden;">
<table border="1" cellspacing="0" width="90%" bordercolor="#cccccc">
<tbody>
<tr>
<td width="33%" valign="TOP">Локальное время string</td>
</tr>
</tbody>
</table>
</div>
]]></content:encoded>
			<wfw:commentRss>http://fixblog.ru/2010/04/14/javascript-%d0%b2%d1%80%d0%b5%d0%bc%d1%8f-%d0%b8-%d0%b4%d0%b0%d1%82%d0%b0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>settimeout javascript</title>
		<link>http://fixblog.ru/2010/04/14/settimeout-javascript/</link>
		<comments>http://fixblog.ru/2010/04/14/settimeout-javascript/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 13:40:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://fixblog.ru/?p=306</guid>
		<description><![CDATA[Синтаксис
timeout_id = window.setTimeout(func&#124;code, delay)
Аргументы
func&#124;code
Функция или строка кода для выполнения
delay
Задержка в миллисекундах, т.е 1000 это 1 секунда
Описание, примеры
Этот метод выполняет код(или функцию), указанный в первом аргументе, асинхронно, с задержкой в delay миллисекунд.
В отличие от метода setInterval, setTimeout выполняет код только один раз.
В каком виде указывать первый параметр &#8211; в виде строки кода или функции &#8211; разницы [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Синтаксис</strong><br />
<em>timeout_id = window.setTimeout(func|code, delay)</em></p>
<p><strong>Аргументы</strong><br />
<em>func|code</em></p>
<p><strong>Функция или строка кода для выполнения</strong><br />
<em>delay</em><br />
Задержка в миллисекундах, т.е 1000 это 1 секунда</p>
<p><strong>Описание, примеры</strong></p>
<p>Этот метод выполняет код(или функцию), указанный в первом аргументе, асинхронно, с задержкой в delay миллисекунд.</p>
<p>В отличие от метода setInterval, setTimeout выполняет код только один раз.</p>
<p>В каком виде указывать первый параметр &#8211; в виде строки кода или функции &#8211; разницы нет.</p>
<p>Следующие два вызова работают одинаково:</p>
<p><em>1    // первый аргумент &#8211; строка<br />
2    setTimeout(&#8216;alert("прошла секунда")&#8217;, 1000)</p>
<p>1    // первый аргумент &#8211; функция<br />
2    function second_passed() {<br />
3    alert("прошла секунда")<br />
4    }<br />
5    setTimeout(second_passed, 1000)</em></p>
<p>При указании строки кода &#8211; интерпретатор динамически создает анонимную функцию с телом из данной строки. Но более правильным считается объявление функции в явном виде, например так:</p>
<p><em>1    setTimeout(function() { alert(&#8216;0.5 секунды&#8217;) }, 500)</em></p>
<p>Вызов со строкой существует для совместимости с прежними версиями javascript.<br />
Контекст выполнения, this</p>
<p>Функция выполняется в другом контексте, отличном от контекста, в котором задается setTimeout.</p>
<p>При этом значение this = window, поэтому о передаче правильного this надо позаботиться отдельно.<br />
Пример: Без передачи this</p>
<p><em>1    object = {<br />
2    func: function() { alert(this) }<br />
3    }<br />
4<br />
5    setTimeout( object.func , 1000) // this будет равно window</em><br />
Пример: Передача this через call</p>
<p><em>1    object = {<br />
2    func: function() { alert(this) }<br />
3    }<br />
4<br />
5    // правильный вариант с передачей this<br />
6    setTimeout( function() { object.func.call(object) } , 1000)</em></p>
<p>Как правило, this также передаетя через замыкание, для этого используется либо промежуточная переменная во внешней функции, которая заранее ставится в нужное значение.</p>
<p><em>1    &#8230;<br />
2    var self = this // промежуточная перменная<br />
3    function fun() {<br />
4    alert(self)<br />
5    }<br />
6    setTimeout(fun, 1000)</em></p>
<p>Отмена выполнения</p>
<p>Вы можете отменить выполнение setTimeout при помощи clearTimeout, используя для этого идентификатор таймаута.<br />
var timeout_id = setTimeout(&#8230;)<br />
clearTimeout(timeout_id)<br />
<em><br />
01    &lt;input type="button" onclick="on()" value="Запустить таймаут"/&gt;<br />
02    &lt;input type="button" onclick="off()" value="Остановить отсчет"/&gt;<br />
03    &lt;script&gt;<br />
04    function go() { alert(&#8216;Я сработало&#8217;) }<br />
05<br />
06    function on() {<br />
07    timeoutId = setTimeout(go, 3000)<br />
08    }<br />
09<br />
10    function off() {<br />
11    clearTimeout(timeoutId)<br />
12    }<br />
13    &lt;/script&gt;</em></p>
]]></content:encoded>
			<wfw:commentRss>http://fixblog.ru/2010/04/14/settimeout-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javascript select</title>
		<link>http://fixblog.ru/2010/04/14/javascript-select/</link>
		<comments>http://fixblog.ru/2010/04/14/javascript-select/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 13:35:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://fixblog.ru/?p=302</guid>
		<description><![CDATA[Работаем с  SELECT из Javascript (что и как)
Для решения поставленной задачи необходимо иметь понятие о том как  воздействовать на  элемент SELECT из  javascript  скрипта.

Пусть у нас на странице есть элемент:
Строка списка 0Строка  списка 1Строка списка 2
&#60;FORM name="myForm"&#62;

  &#60;select id="mySelectId" name="mySelect"&#62;
    &#60;option value="str0"&#62; Строка списка 0 [...]]]></description>
			<content:encoded><![CDATA[<h2>Работаем с  SELECT из Javascript (что и как)</h2>
<p>Для решения поставленной задачи необходимо иметь понятие о том как  воздействовать на  элемент <strong>SELECT</strong> из  javascript  скрипта.</p>
<p><span id="more-302"></span></p>
<p>Пусть у нас на странице есть элемент:</p>
<select><option>Строка списка 0</option><option>Строка  списка 1</option><option>Строка списка 2</option></select>
<pre>&lt;FORM name="myForm"&gt;

  &lt;select id="mySelectId" name="mySelect"&gt;
    &lt;option value="str0"&gt; Строка списка 0 &lt;/option&gt;
    &lt;option value="str1"&gt; Строка списка 1 &lt;/option&gt;
    &lt;option value="str2"&gt; Строка списка 2 &lt;/option&gt;
  &lt;/select&gt;

&lt;/FORM&gt;
</pre>
<p>Как видно, <strong>SELECT</strong> состоит из элементов <strong>OPTION</strong>,  которые представляют собой элементы списка. Сами элементы <strong>OPTION</strong> состоят из текстовой метки заключенной между тегами <code>option</code> и атрибута <code>value</code> в котором содержится значение  соответствующее текстовой метке. Текстовая метка видна пользователю в  списке, тогда как значение value не отображается на экране, а передается  на сервер при отправке формы (на сервер передаются только значения  выделенных элементов списка). Таким образом, для изменения элемента <strong>SELECT</strong>,  мы должны воздействовать на элементы <strong>OPTION</strong>.</p>
<p>Для обращения к нашему элементу списка будем использовать DOM метод getElementById  объекта document:</p>
<pre>var objSel = document.getElementById("mySelectId");</pre>
<p>Если список находится внутри формы, то к нему можно обратиться и  через форму:</p>
<pre>var objSel = document.myForm.mySelect;</pre>
<p>Где, myForm имя формы заданное через атрибут name в теге FORM, а  mySelect имя элемента формы, заданное через атрибут name в теге SELECT.</p>
<h3>Как добавить новый элемент в список SELECT ?</h3>
<p>Все HTML элементы OPTION доступны в javascript-скрипте через свойство  <strong>options</strong> объекта <strong>Select</strong>, которое  является коллекцией элементов (упрощенно говоря массивом) элементов  Option.</p>
<pre>var objSel = document.getElementById("mySelect");

//Создаем новый объект Option и заносим его в коллекцию options
objSel.options[0] = new Option("Строка списка 0", "str0");
objSel.options[1] = new Option("Строка списка 1", "str1");
objSel.options[2] = new Option("Строка списка 2", "str2");</pre>
<p>Добавлять элементы в конец списка удобно так:</p>
<pre>objSel.options[objSel.options.length] = new Option("текст", "значение");</pre>
<p>Свойство <strong>length</strong> объекта <strong>options</strong> содержит количество элементов в списке. Данное свойство доступно как для  чтения, так и для записи. Если установить свойству length значение  больше чем текущее количество элементов, то в список будут добавлены  пустые элементы. Если же установленное значение меньше текущего  количества элементов списка, то список будет усечен до указанного  количества элементов (лишние элементы будут удалены). Таким образом,  добавить новый элемент в список можно и так (допустим у нас есть пустой  список, добавим первый элемент):</p>
<pre>objSel.options.length=1; //добавляем в конец списка пустой элемент
objSel.options[0].text = "Строка списка 0";
objSel.options[0].value = "str0";</pre>
<p>Вернемся к функции-конструктору <code>Option()</code>. Помимо  указания <strong>текста</strong> и <strong>значения</strong> можно  указать является ли элемент выделенным по умолчанию (<strong>defaultSelected</strong>),  т.е. будет ли элемент выделенным при сбросе формы методом reset() и  является ли элемент выделенным в данный момент (<strong>selected</strong>).  Полный синтаксис функции конструктора объекта Option имеет следующий  вид:</p>
<pre>var newOpt = new Option("<em>text</em>", "<em>value</em>", <em>isDefaultSelected</em>, <em>isSelected</em>);</pre>
<p>Где, первые два аргумента &#8211; это строки, а третий и червертый булевы  аргументы и принимают значения true или false.</p>
<p>До сих пор для добавления элемента мы использовали BOM, однако лучше, во  всех отношениях, использовать методы DOM, и реализовывать  добавление элемента так:</p>
<pre>function addOption (oListbox, text, value, isDefaultSelected, isSelected)
{
  var oOption = document.createElement("option");
  oOption.appendChild(document.createTextNode(text));
  oOption.setAttribute("value", value);

  if (isDefaultSelected) oOption.defaultSelected = true;
  else if (isSelected) oOption.selected = true;

  oListbox.appendChild(oOption);
}
</pre>
<p>Пример использования:</p>
<pre>var objSel = document.getElementById("mySelect");
addOption(objSel, "текст", "значение", true);</pre>
<p>И на последок о некоторых особенностях IE <img src='http://fixblog.ru/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  В IE 5+ исключена  (ввиду нестабильной работы) возможность добавления элемента списка через  <code>new Option()</code>, когда сам список SELECT находится в одном  документе (окне, фрейме), а элементы добавляются из другого документа  (окна, фрейма), например, если SELECT в родительском окне, а добавить  элементы нужно из дочернего окна, открытого через window.open().  Используя DOM-методы вы сможете обойти данную проблему.</p>
<h3>Доступ к элементам списка</h3>
<pre>var text  = objSel.options[2].text;
var value = objSel.options[2].value;</pre>
<p>Элементы списка в массиве <strong>options</strong> индексируются с  нуля, поэтому первый элемент списка имеет индекс 0:</p>
<p>objSel.options[0] &#8211; первый элемент списка.<br />
objSel.options[objSel.options.length-1] &#8211; последний элемент списка</p>
<h3>Изменение  элемента списка</h3>
<pre>objSel.options[1].text = "Новый текст";
objSel.options[1].value = "новое значение";

objSel.options[2] = new Option("Новый текст", "новое значение");//полная замена элемента на новый</pre>
<h3>Как узнать какой элемент выбран и как выбрать нужный элемент?</h3>
<p>У объекта элемента SELECT существует свойство <strong>selectedIndex</strong>,  которое содержит индекс выделенного  элемента, или -1 если нет  выделенных элементов.</p>
<pre>if ( objSel.selectedIndex != -1)
{
  //Если есть выбранный элемент, отобразить его значение (свойство value)
  alert(objSel.options[objSel.selectedIndex].value);
}
</pre>
<blockquote><p>Здесь  хочу заметить, что возможен выбор нескольких значений  в списке, для этого нужно указать  свойство multiple в теге SELECT и  указать количество видимых без прокрутки списка элементов  через атрибут  size (т.е. установить высоту списка измеряемую в видимых элементах),  например, разметка &lt;select size="3&#8243; multiple&gt;&#8230;&lt;/select&gt;  создаст список высотой в 3 элемента, в котором разрешено выбирать  несколько элементов сразу. Если вы указываете size больше 1, то список  перестает быть выпадающим, а  изменяет вид на обычный блок с полосой  прокрутки (она доступка при необходимоти). Свойство size можно указывать  и без multiple.</p></blockquote>
<p>В случае когда доступен множественный выбор элементов, данное  свойство содержит индекс первого выделенного в списке элемента (т.е.  того элемента который в списке находиться выше). Чтобы в данном случае  найти все выделенные элементы нужно перебрать в цикле все элементы  массива options и проверить их свойство <strong>selected</strong>,  которое равно true у выделенных элементов:</p>
<pre>function getSelectedIndexes (oListbox)
{
  var arrIndexes = new Array;
  for (var i=0; i &lt; oListbox.options.length; i++)
  {
      if (oListbox.options[i].selected) arrIndexes.push(i);
  }
  return arrIndexes;
};</pre>
<p>Функция getSelectedIndexes принимает в качестве аргумента объект  списка и возвращает массив индексов выделенных элементов.</p>
<p>Пример использования (отображение индексов выделеных элементов):</p>
<pre>var objSel = document.getElementById("mySelect");

alert ( getSelectedIndexes(objSel) );</pre>
<p>Описанные свойства <strong>selectedIndex</strong> и <strong>selected</strong> являются свойствами как для чтения так и для записи, поэтому присваивая  им значения можно выделять нужные элементы.</p>
<pre>//выбрать (выделить) второй элемент списка
objSel.selectedIndex = 1;
//или так
objSel.options[1].selected=true;</pre>
<p>Для выбора нескольких элементов (при установленном свойстве multiple)  нужно установить свойство selected=true для всех нужных элементов:</p>
<pre>//выбрать (выделить) 1 и 3 элементы списка
objSel.options[0].selected=true;
objSel.options[2].selected=true;</pre>
<p>Следует обратить <strong>внимание на баг</strong> в  браузере Opera, проявляющийся при динамическом заполнении списка через  скрипт и последующей установке выделенного пункта через свойство  selectedIndex или selected. Баг проявляется в добавлении пустых  элементов в список, доступ к которым из скрипта не возможен (скрипт их  не видит, зато пользователь видит и может их выбрать). Эти пустые  лже-элементы списка появляются после установки свойства selectedIndex  или selected. Для обхода этой ошибки в Opera используйте установку этих  свойств через setTimeout с задержкой в 1мс:</p>
<pre>var objSel = document.getElementById("mySelect");

//Динамически создаем элементы списка
objSel.options[0] = new Option("Строка списка 0", "str0");
objSel.options[1] = new Option("Строка списка 1", "str1");

//Выделяем второй элемент списка
setTimeout( function(){objSel.options[1].selected=true;}, 1 );</pre>
<h3>Удаление i-го элемента списка</h3>
<pre>objSel.options[1] = null; //удалить элемент списка с индексом 1 (второй элемент списка)</pre>
<p>Или используя DOM метод remove:</p>
<pre>oListbox.remove(0); //удалить первый элемент списка</pre>
<h3>Как очистить список SELECT (как удалить все элементы списка)?</h3>
<p>Для этого можно установить свойство length в ноль:</p>
<pre>objSel.options.length = 0;</pre>
<p>Либо вызвать DOM метод remove для каждого элемента списка:</p>
<pre>function clearSelect(oListbox)
{
  for (var i=oListbox.options.length-1; i &gt;= 0; i--)
  {
      oListbox.remove(i);
  }
};</pre>
<h3>Как сдвинуть элемент списка вверх или вниз</h3>
<pre>function shiftUpOption (oListbox, iIndex)
{
  if (iIndex &gt; 0)
  {
    var oOption = oListbox.options[iIndex];
    var oPrevOption = oListbox.options[iIndex-1];
    oListbox.insertBefore(oOption, oPrevOption);
  }
};

function shiftDownOption (oListbox, iIndex)
{
  if (iIndex &lt; oListbox.options.length - 1)
  {
    var oOption = oListbox.options[iIndex];
    var oNextOption = oListbox.options[iIndex+1];
    oListbox.insertBefore(oNextOption, oOption);
  }
};</pre>
<p>Примеры:</p>
<pre>var objSel = document.getElementById("mySelect");
shiftDownOption (objSel, 1); //переместить второй элемент списка (с индектом 1) на первую позицию (с индексом 0)
</pre>
<h2>Динамические связанные списки Select &#8211; взгляд изнутри</h2>
<p>Ну что же, теперь вы знаете достаточно, чтобы выполнить практически  любую задачу связанную с элементом SELECT и Javascript, а так же понять  пример реализации задачи, поставленной в самом начале статьи. Как это выглядит изнутри смотрите&#8230;</p>
<pre>&lt;html&gt;
  &lt;head&gt;
  &lt;title&gt;Связанные селекты&lt;/title&gt;

  &lt;!-- Подключаем javascript-библиотеку функций --&gt;
  &lt;script type="text/javascript" src="<a href="http://fixblog.ru/wp-content/uploads/2010/04/linkedselect.js">linkedselect.js</a>"&gt;&lt;/script&gt;
&lt;/head&gt;

&lt;body&gt;

&lt;!-- Первый (главный) список (изначально заполнен вручную) --&gt;
  &lt;select size="4" id="List1"&gt;
    &lt;option value="<strong>ie</strong>"&gt; Internet Explorer &lt;/option&gt;
    &lt;option value="<strong>safari</strong>"&gt; Safari &lt;/option&gt;
  &lt;/select&gt;

&lt;!-- Подчиненный список 1 (изначально пуст) --&gt;
  &lt;select size="4" id="List2"&gt;&lt;/select&gt;

&lt;!-- Подчиненный список 2 (изначально пуст) --&gt;
  &lt;select size="4" id="List3"&gt;&lt;/select&gt;

&lt;script type="text/javascript"&gt;
// Создаем новый объект связанных списков
<strong>var syncList1 = new syncList;</strong>

// Определяем значения подчиненных списков (2 и 3 селектов)
<strong>syncList1.dataList = {</strong>

/* Определяем элементы второго списка в зависимости
от выбранного значения в первом списке */

  '<strong>ie</strong>':{
      '<strong>ie_win</strong>':'Windows',
      '<strong>ie_mac</strong>':'Mac'
  },

  '<strong>safari</strong>':{
      '<strong>safari_mac</strong>':'Mac'
  },

/* Определяем элементы третьего списка в зависимости
от выбранного значения во втором списке */

  '<strong>ie_win</strong>':{
      'ie_win_5':'версия 5',
      'ie_win_6':'версия 6'
  },

  '<strong>ie_mac</strong>':{
      'ie_mac_5':'версия 5'
  },

  '<strong>safari_mac</strong>':{
      'safari_mac_1':'версия 1',
      'safari_mac_2':'версия 2'
  }
<strong>};</strong>

// Включаем синхронизацию связанных списков
<strong>syncList1.sync</strong>("List1","List2","List3");
&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Давайте разберем страницу. Первым делом в разделе head подключаем  библиотеку <a href="http://fixblog.ru/wp-content/uploads/2010/04/linkedselect.js">linkedselect.js</a>,  которая определяет класс объектов <strong>syncList</strong> и  собственно  выполняет синхронизацию. Далее в теле документа (внутри тэга  body) определяем HTML списки SELECT. Причем первый список (<strong>List1</strong>) уже содержит нужные значения (тэги option) , а  два других (<strong>List2</strong>, <strong>List3</strong>),  которые должны заполняться динамически, изначально пусты. Затем создаем   объект связанного списка: <strong>var syncList1 = new syncList,</strong> и заполняем его свойство <strong>syncList1.dataList</strong><strong> </strong>данными  для  пустых списков <strong>List2</strong> и <strong>List3</strong> (надеюсь, что разукрашенный код и комментарии  позволят понять, как <strong>dataList</strong>-объект формируется). Ну и  последний шаг, это запуск синхронизации &#8211; вызов метода <strong>syncList1.sync()</strong>.  Данный метод принимает в качестве аргументов id селектов, которые нужно  синхронизировать между собой, их может быть 2 и более (в нашем случае  3). Имейте в виду, что порядок следования аргументов важен и определяет  подчиненность селектов (главный вначале, подчиненные за ним). Так же  замечу, что создавать  объект syncList и заполнять его данными можно и  до определения самих селектов тэгами HTML (например, в разделе head  документа), главное чтобы селекты уже были в документе на момент вызова  метода syncList.sync().</p>
<p>P.S.: Не забудьте скачать и сохранить у себя библиотеку  <a href="http://fixblog.ru/wp-content/uploads/2010/04/linkedselect.js">linkedselect.js</a></p>
]]></content:encoded>
			<wfw:commentRss>http://fixblog.ru/2010/04/14/javascript-select/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javascript координаты курсора</title>
		<link>http://fixblog.ru/2010/04/14/javascript-%d0%ba%d0%be%d0%be%d1%80%d0%b4%d0%b8%d0%bd%d0%b0%d1%82%d1%8b-%d0%ba%d1%83%d1%80%d1%81%d0%be%d1%80%d0%b0/</link>
		<comments>http://fixblog.ru/2010/04/14/javascript-%d0%ba%d0%be%d0%be%d1%80%d0%b4%d0%b8%d0%bd%d0%b0%d1%82%d1%8b-%d0%ba%d1%83%d1%80%d1%81%d0%be%d1%80%d0%b0/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 13:25:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://fixblog.ru/?p=300</guid>
		<description><![CDATA[Простенький код для определения координат мыши.
onload = function() {
document.onclick = function(e) {
if(!e) e = event;
alert([e.clientX, e.clientY]);
}
}
]]></description>
			<content:encoded><![CDATA[<p>Простенький код для определения координат мыши.</p>
<p><span id="more-300"></span>onload = function() {<br />
document.onclick = function(e) {<br />
if(!e) e = event;<br />
alert([e.clientX, e.clientY]);<br />
}<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://fixblog.ru/2010/04/14/javascript-%d0%ba%d0%be%d0%be%d1%80%d0%b4%d0%b8%d0%bd%d0%b0%d1%82%d1%8b-%d0%ba%d1%83%d1%80%d1%81%d0%be%d1%80%d0%b0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javascript курсор</title>
		<link>http://fixblog.ru/2010/04/14/javascript-%d0%ba%d1%83%d1%80%d1%81%d0%be%d1%80/</link>
		<comments>http://fixblog.ru/2010/04/14/javascript-%d0%ba%d1%83%d1%80%d1%81%d0%be%d1%80/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 13:23:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://fixblog.ru/?p=298</guid>
		<description><![CDATA[Наверное самый популярный пример &#8211; за крусором бегает какая либо картинка.

&#60;script language="JavaScript"&#62;
var Netscape=(navigator.appName.indexOf("Netscape") != -1);
function Move(e) {
if (!document.getElementById) return;
obj=document.getElementById("mouse");
if (Netscape)
event=e;
if (event.pageX) { // Netscape&#8230;
xpointer=event.pageX;
ypointer=event.pageY;
}
else if (event.x) { // Internet Explorer&#8230;
xpointer=event.x;
ypointer=event.y;
}
obj.style.left=xpointer &#8211; 55;
obj.style.top=ypointer &#8211; 55;
}
function Setup() {
if (!document.getElementById) return;
if (Netscape)
document.captureEvents(Event.MOUSEMOVE);
document.onmousemove=Move;
}
&#60;/script&#62;
&#60;body onLoad="Setup();" style="cursor:crosshair"&#62;
&#60;div ID="mouse" style="position:absolute; left:50; top:50;"&#62;
&#60;img src="yourimage.gif" width="50&#8243; height="50&#8243; alt="" border="0&#8243;&#62;
&#60;/div&#62;
&#60;/body&#62;
]]></description>
			<content:encoded><![CDATA[<p>Наверное самый популярный пример &#8211; за крусором бегает какая либо картинка.</p>
<p><span id="more-298"></span><br />
&lt;script language="JavaScript"&gt;<br />
var Netscape=(navigator.appName.indexOf("Netscape") != -1);<br />
function Move(e) {<br />
if (!document.getElementById) return;<br />
obj=document.getElementById("mouse");<br />
if (Netscape)<br />
event=e;<br />
if (event.pageX) { // Netscape&#8230;<br />
xpointer=event.pageX;<br />
ypointer=event.pageY;<br />
}<br />
else if (event.x) { // Internet Explorer&#8230;<br />
xpointer=event.x;<br />
ypointer=event.y;<br />
}<br />
obj.style.left=xpointer &#8211; 55;<br />
obj.style.top=ypointer &#8211; 55;<br />
}<br />
function Setup() {<br />
if (!document.getElementById) return;<br />
if (Netscape)<br />
document.captureEvents(Event.MOUSEMOVE);<br />
document.onmousemove=Move;<br />
}<br />
&lt;/script&gt;</p>
<p>&lt;body onLoad="Setup();" style="cursor:crosshair"&gt;<br />
&lt;div ID="mouse" style="position:absolute; left:50; top:50;"&gt;<br />
&lt;img src="yourimage.gif" width="50&#8243; height="50&#8243; alt="" border="0&#8243;&gt;<br />
&lt;/div&gt;<br />
&lt;/body&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://fixblog.ru/2010/04/14/javascript-%d0%ba%d1%83%d1%80%d1%81%d0%be%d1%80/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javascript document write</title>
		<link>http://fixblog.ru/2010/04/14/javascript-document-write/</link>
		<comments>http://fixblog.ru/2010/04/14/javascript-document-write/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 13:19:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://fixblog.ru/?p=296</guid>
		<description><![CDATA[Язык JavaScript является системно-независимым и совместим между всеми типами компьютеров , работающими в Интернет.
Программы на языке JavaScript включаются в состав HTML документа и , фактически , этот язык может считаться расширением состава команд HTML.
Поэтому для создания программ на JavaScript не требуется никаких дополнительных средств , необходим лишь браузер, поддерживающий JavaScript (Браузеры Netscape Navigator 2.0 и [...]]]></description>
			<content:encoded><![CDATA[<p>Язык JavaScript является системно-независимым и совместим между всеми типами компьютеров , работающими в Интернет.<br />
Программы на языке JavaScript включаются в состав HTML документа и , фактически , этот язык может считаться расширением состава команд HTML.</p>
<p>Поэтому для создания программ на JavaScript не требуется никаких дополнительных средств , необходим лишь браузер, поддерживающий JavaScript (Браузеры Netscape Navigator 2.0 и выше или Microsoft Internet Explorer) и редактор для создания HTML документов.</p>
<p><span id="more-296"></span>Каждая вставка в JavaScript в HTML &#8211; документе начинается командой &lt;SCRIPT&gt; с необязательным параметром LANGUAGE и заканчивается командой &lt;/SCRIPT&gt;<br />
Например, следующий фрагмент:</p>
<p><em>&lt;SCRIPT LANGUAGE="JavaScript"&gt;<br />
document.write("Наш первый пример на JavaScript");<br />
&lt;/SCRIPT&gt;</em></p>
<p>Выводит на зкран строку:</p>
<p><em>Наш первый пример на JavaScript ﻿</em></p>
]]></content:encoded>
			<wfw:commentRss>http://fixblog.ru/2010/04/14/javascript-document-write/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>lightbox</title>
		<link>http://fixblog.ru/2010/04/13/lightbox/</link>
		<comments>http://fixblog.ru/2010/04/13/lightbox/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 16:42:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[lightbox]]></category>

		<guid isPermaLink="false">http://fixblog.ru/?p=276</guid>
		<description><![CDATA[Смотри также lightbox jquery галерея
Библиотека подключается элементарно просто. Для начала ее необходимо скачать с сайта автора:

Скачать 
Также там можно скачать разнообразные картинки для симпатичного оформления. После того как скачали, нужно:
1. Подключить lightbox.js к вашему сайту
&#60;script type="text/javascript" src="lightbox.js"&#62;&#60;/script&#62;
2. Добавить аттрибут rel="lightbox" ко всем ссылкам, где вы хотите использовать лайтбокс. Например:
&#60;a href="images/image-1.jpg" rel="lightbox" title="my caption"&#62;image #1&#60;/a&#62;
Чтобы показывался [...]]]></description>
			<content:encoded><![CDATA[<p>Смотри также <a href="http://fixblog.ru/2010/04/13/lightbox-jquery-%d0%b3%d0%b0%d0%bb%d0%b5%d1%80%d0%b5%d1%8f/">lightbox jquery галерея</a><br />
Библиотека подключается элементарно просто. Для начала ее необходимо скачать с сайта автора:</p>
<p><span id="more-276"></span></p>
<p><a href="http://www.huddletogether.com/projects/lightbox/">Скачать </a></p>
<p>Также там можно скачать разнообразные картинки для симпатичного оформления. После того как скачали, нужно:</p>
<p>1. Подключить lightbox.js к вашему сайту</p>
<p>&lt;script type="text/javascript" src="lightbox.js"&gt;&lt;/script&gt;</p>
<p>2. Добавить аттрибут rel="lightbox" ко всем ссылкам, где вы хотите использовать лайтбокс. Например:<br />
&lt;a href="images/image-1.jpg" rel="lightbox" title="my caption"&gt;image #1&lt;/a&gt;</p>
<p>Чтобы показывался заголовок можно использовать аттрибут title.</p>
<p>Также можно поменять цвета и вообще вывод:</p>
<p>1. Вот пример css:</p>
<p>#lightbox{<br />
background-color:#eee;<br />
padding: 10px;<br />
border-bottom: 2px solid #666;<br />
border-right: 2px solid #666;<br />
}<br />
#lightboxDetails{<br />
font-size: 0.8em;<br />
padding-top: 0.4em;<br />
}<br />
#lightboxCaption{ float: left; }<br />
#keyboardMsg{ float: right; }</p>
<p>#lightbox img{ border: none; }<br />
#overlay img{ border: none; }</p>
<p>2. Чтобы использовать эффект затемнения, необходим полупрозрачный PNG файл, а также немного CSS:</p>
<p>#overlay{ background-image: url(overlay.png); }</p>
<p>* html #overlay{<br />
background-color: #000;<br />
back\ground-color: transparent;<br />
background-image: url(blank.gif);<br />
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="overlay.png", sizingMethod="scale");<br />
}</p>
<p>3. Для того, чтобы показать пользователю ползунок загрузки, в самом верху lightbox.js поменяйте путь до картинки с ползунком.</p>
<p>var loadingImage = &#8216;loading.gif&#8217;;</p>
<p>4. Аналогично с кнопкой закрыть, путь до него меняется там же.</p>
<p>var closeButton = &#8216;close.gif&#8217;;</p>
]]></content:encoded>
			<wfw:commentRss>http://fixblog.ru/2010/04/13/lightbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javascript scrollbar</title>
		<link>http://fixblog.ru/2010/04/13/javascript-scrollbar/</link>
		<comments>http://fixblog.ru/2010/04/13/javascript-scrollbar/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 16:16:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Note]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[scrollbar]]></category>

		<guid isPermaLink="false">http://fixblog.ru/?p=264</guid>
		<description><![CDATA[Иногда все таки надо извернуться и сделать цветной скролл бар через яваскрипт
Ниже пример, а так же пример "мигающего скролл бара" &#8211; для тех кто соскучился по 90-ым  

document.body.style.scrollbarFaceColor="colorname"
document.body.style.scrollbarArrowColor="colorname"
document.body.style.scrollbarTrackColor="colorname"
document.body.style.scrollbarShadowColor="colorname"
document.body.style.scrollbarHighlightColor="colorname"
document.body.style.scrollbar3dlightColor="colorname"
document.body.style.scrollbarDarkshadowColor="colorname"
Мигающий скролл бар, меняет цвета каждую секунду
&#60;script&#62;
var mode=0
function blinkscroll(){
if (mode==0)
document.body.style.scrollbarFaceColor="blue"
else
document.body.style.scrollbarFaceColor="green"
mode=(mode==0)? 1 : 0
}
setInterval("blinkscroll()",1000)
&#60;/script&#62;
]]></description>
			<content:encoded><![CDATA[<p>Иногда все таки надо извернуться и сделать цветной скролл бар через яваскрипт</p>
<p>Ниже пример, а так же пример "мигающего скролл бара" &#8211; для тех кто соскучился по 90-ым <img src='http://fixblog.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span id="more-264"></span></p>
<p><code>document.body.style.scrollbarFaceColor="colorname"<br />
document.body.style.scrollbarArrowColor="colorname"<br />
document.body.style.scrollbarTrackColor="colorname"<br />
document.body.style.scrollbarShadowColor="colorname"<br />
document.body.style.scrollbarHighlightColor="colorname"<br />
document.body.style.scrollbar3dlightColor="colorname"<br />
document.body.style.scrollbarDarkshadowColor="colorname"</code></p>
<p>Мигающий скролл бар, меняет цвета каждую секунду</p>
<p><code>&lt;script&gt;</p>
<p>var mode=0</p>
<p>function blinkscroll(){<br />
if (mode==0)<br />
document.body.style.scrollbarFaceColor="blue"<br />
else<br />
document.body.style.scrollbarFaceColor="green"<br />
mode=(mode==0)? 1 : 0<br />
}<br />
setInterval("blinkscroll()",1000)<br />
&lt;/script&gt;</code></p>
]]></content:encoded>
			<wfw:commentRss>http://fixblog.ru/2010/04/13/javascript-scrollbar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

