rgl
User-
Posts
109 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Store
Everything posted by rgl
-
Червертое отличие, foo.toString() выдаст слегка разные строчки, в случае если функция определена с new, в строке будет присутствовать слово anonymous
-
Третье отличие: // ошибка в определении функции, с помощью try-catch перехвачена быть не может. try { var foo = function() { \*)+: } } catch( e ) {} // из-за ошибки в определении функции до алерта дело не дойтет alert( 1 ) // та же самая ошибка, но теперь ошибка времени выполнения, try-catch перехватывается, алерт срабатывает try { var foo = new Function( "\*)+:" ); } catch( e ) {} alert( 1 )
-
Первое отличие: var x = 1; (function(){ var x = 2; var foo1 = function() { alert( x ); } var foo2 = new Function( "alert( x );" ); foo1(); // выдаст 2 foo2(); // выдаст 1 })(); Второе отличие: var foo1 = function() { alert( 1 ); } // тело функции жестко задано var s = "alert( 1 );" var foo2 = new Function( s ); // тело функции - переменная (строка) которая может быть получена в процессе выполнения, напр. введена пользователем, запрошена по AJAX, и т.д. В каком-то смысле можно использовать как альтернатива eval
-
new позволяет определять функцию в случае, если ее тело заранее не известно, т.к. в этом случае можно использовать строковые переменные. Т.е. код функции можно получить в процессе выполнения скрипта. Хотя сложно придумать когда это может понадобиться.
-
http://learn.javascr....ru/play/GI45Ub Ерунда какая-то. Сами-то поняли что написали? Модифицирую ваш пример, строку 16 заменяю на: Array.prototype.isPrototypeOf( x ), и получается одно и то же.
-
И зачем новичку, который еще не дошел до главы про объекты, такое подсовывать? Запугать окончательно?
-
Попробуйте "порыть" в сторону формата svg
-
Проще показать на работающем примере, чем объяснять. // создаем несколько объектов var o1 = {}, o2 = {}, o3 = {}, o4 = {}, o5 = {}; // чтобы легче было за ними следить, даем им имена o1.name = "o1"; o2.name = "o2"; o3.name = "o3"; o4.name = "o4"; o5.name = "o5"; // выстраиваем объекты в цепочку. Пусть свойство next каждого объекта указывает на следующий в цепочке o1.next = o2; o2.next = o3; o3.next = o4; o4.next = o5; // o5.next ничего не присваиваем, он последний, т.е. следующего нет function tail(o) { while( o.next ) { alert( "заменяем "+o.name+" на "+o.next.name ); o = o.next; } alert( "возвращаем " + o.name ); return o; } tail( o1 ); Bumblebee, рекомендую в качестве упражнения проделать то же с функцией, как она написана в книжке, т.е. также проверить ее работу по шагам.
-
Вполняется инструкция o = o.next и теперь переменная o указывает не на тот объект, что вначале, а на следующий. Потом все повторяется еще раз, и так до тех пор, пока следующий есть. Как только следующего нет, так цикл заканчивается, и возвращается тот самый объект, у которого нет следующего, т.е. последний.
-
Ага, это понятно, но это разница в том, как применять, т.е. a instanceof Array - instanceof принимает в качестве аргументов сам объект, и предполагаемую функцию-конструктор. Array.prototype.isPrototypeOf( a ) - а тут нужно явно указывать предполагаемый прототип, т.е. писать не просто Array а Array.prototype Но вопрос не об этом, а о том, есть ли различие в возвращаемом значении или оно всегда одно и то же.
-
var a = []; a instanceof Array // true Array.prototype.isPrototypeOf( a ) // true a instanceof Object // true Object.prototype.isPrototypeOf( a ) // true a instanceof Date // false Date.prototype.isPrototypeOf( a ) // false Вопрос: instanceof и isPrototypeOf всегда выдают одно и то же? Если да, то зачем нужно и то и другое если достаточно чего-то одного? Если нет - пример?
-
Хорош учебник, если приводит примеры с ошибками. Пример не работает, т.е. всегда возвращает переданный функции параметр, а не последний объект в списке. А вот если поставить после цикла точку с запятой, то тогда работает правильно function tail(o) { for(; o.next; o = o.next) ; // тут добавлена точка с запятой return o; } но все равно так писать не надо, не лучший стиль. Я бы писал так: function tail(o) { while( o.next ) o = o.next; return o; } Нифига он не идет, а возвращает значение на первой же итерации. Видимо, автор учебника ошибочно полагал, что интерпретатор сам вставит точку с запятой после цикла (как он это иногда делает, но НЕ после цикла). Так что команда return o находится внутри цикла, и больше одной итерации цикла выполнено быть не может.
-
Не знаю насколько хороший, но лично мне пошел на пользу http://www.intuit.ru/department/internet/cssbasics/
-
setTimeout('preload_imageslist('img/<?=$_GET['link']?>1.gif');', 10000); Тройное вложение одинарных кавычек??
-
Поиск и вывод только не совпавших элементов в массиве.
rgl replied to Dimaz's question in JavaScript
var tmp = {}; for( i = 0; i < arr.length; ++i ) tmp[arr[i].toString()] = 1; for( i in tmp ) dim.push( parseInt(i) ); -
Достаточно много народа еще пользуется экранами 1024ч768 и когда картинка по высоте была больше, были жалобы на две полосы прокрутки, поэтому картинку пришлось уменьшить.
-
Полностью переработал. Теперь сделал с помощью map и area Чтобы циферки (номера участков) не мешали, картинку с настоящей картой положил вниз, поверх нее циферки-номера, еще сверху - прозрачный гиф вместе с map и area Критикуйте. http://forum.vzaokskom.ru/maps/limberova-interactive.php
-
Простую шапку для форума (тема - коттеджные поселки) можете?
-
event.stopPropagation() event.cancelBubble = true разные способы сказать, что не надо событие передавать дальше. Каждый из способов работает не во всех браузерах, комбинирование двух - лучше чем каждый по отдельности, но все-же не есть совсем правильное решение. См. обновленный пример (по той же ссылке). У меня в хроме и в опере работает и тот и другой способ, в IE - только event.cancelBubble = true if (event.stopPropagation) { // проверка будет ли работать первый способ event.stopPropagation() // если да, то его и использовать } else { event.cancelBubble = true // а если нет, то использовать второй } Но еще раз повторяю, это не готовое решение, а подсказка где искать :-)
-
Я не спец, просто попытался подсказать в какую сторону искать. Вот это http://forum.vzaokskom.ru/test/bubbling.htm у меня работает в IE, опере и хроме, но не работает в FF Только надо не наводить а кликать
-
function test(t) { alert(t.id); event.cancelBubble = true; }
-
http://javascript.ru/tutorial/events/intro Внимательно почитал, того, что нужно, не нашел. Я могу запретить передачу ("всплывание") события от одного элемента к другому. Но как запретить ПОЯВЛЕНИЕ события? Вот, например, у меня есть картинка, на картинку наложена карта, в тэге area прописаны обработчики onmouseover и onmouseout На картинке находится текст (слева внизу), хочется вот чего - чтобы когда мышка попадает на этот текст (который находится внутри area, событие onmouseout для area не наступало! Перепробовал несколько вариантов, ничего не помогает http://forum.vzaokskom.ru/maps/test.htm Другими словами, можно ли сделать так, чтобы для мышки текста вообще не существовало, а пользователям он был виден?
-
Пытаюсь заюзать map и area Возникает такая проблема - при наверении мышки на область правильно, как я того и хочу, отрабатывается onmouseover() но когда мышка попадает на текст (циферку) поверх картинки, отрабатывается onmouseout() хотя за пределы области мышка не уходит. Можно ли как-нибудь это обойти? Во флэше не могу, во-первых, он есть на у всех (вопреки привычному мнению, что word, excel и flash есть везде). Во-вторых, я флэша не знаю, не умею. А в-третьих, в дальнейшем пользователю будет выдаваться разная информация в таблице, в зависимости от его прав. Как это сделать на php я предлавляю, но не на флэше
-
Делалось так - на фоне картинки размещались циферки, для этого использовалась программа inkscape, потом файл был сохранен в формате svg и из него уже скриптом вытаскивались координаты каждого числа и выводились уже в виде html
-
Сделал карту коттеджного поселлка, а рядом с картой таблица с информацией о владельцах участков. При наведении мышки на строчку таблицы номер соответствующего участка подсвечивается. При наведении мышки на номер участка строчка в таблице тоже подсвечивается, и при необходимости таблица скроллится, но с задержкой в полсекунды, чтобы при при простом проведении мышки таблица не "прыгала", а нужная строчка появлялась только если мышку остановить на интересующем участке. Вся реальная информация находится в таблице, которая видна только в закрытом разделе форума, а это только демонстрашка. Покритикуйте: http://forum.vzaokskom.ru/maps/limber_draft.htm