30.01.2010, 10:38
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
или получить в глаз
|
|
30.01.2010, 11:16
|
|
Профессор
|
|
Регистрация: 03.04.2009
Сообщений: 1,263
|
|
Вариант, но не факт, что от этого перепишутся готовые либы
|
|
30.01.2010, 20:56
|
|
Профессор
|
|
Регистрация: 15.12.2009
Сообщений: 742
|
|
Сообщение от e1f
|
Вы еще маме того стороннего разработчика пойдите нажалуйтесь. Ну как ребенок, честно
|
причем тут ребенок? мне вообще чхать на того кто так пишет. я лично если вижу такой код, то с таким сайтом дело не имею. раз.
Сообщение от e1f
|
как на уже готовый сайт добавить новый функционал, не переделывая старый под угрозой получения в глаз.
|
Если сайт написан так как описал Колай, в глаз вы получите полюбому как не крути. два.
или ТРИ. Выловить начало перекрытия стандартных методов и занести их в переменнные свои. Но это как говорится будет каша в коде и с каждым новым изменением сайт будет... короче сайтом должен заниматься Первый разработчик.
Последний раз редактировалось PeaceCoder, 30.01.2010 в 20:59.
|
|
30.01.2010, 21:42
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от PeaceCoder
|
Если сайт написан так как описал Колай, в глаз вы получите полюбому как не крути. два.
|
Ну почему же. У меня на решение вышеописанной проблемы ушло полторы минуты после того, как нашёл за полтора часа Потому что у меня в данном скрипте свои функции, которые я знаю, каким образом можно переписывать. Если бы использовалась jQuery, то она бы покрылась слоем костылей.
Сообщение от PeaceCoder
|
Выловить начало перекрытия стандартных методов и занести их в переменнные свои.
|
Невозможно.
Но ещё раз повторю, данная библиотечка к тому скрипту отношения не имеет, там весь код заточен под конкретную задачу.
P.S. Коляй, кстати )))
|
|
30.01.2010, 21:54
|
|
Профессор
|
|
Регистрация: 15.12.2009
Сообщений: 742
|
|
Сообщение от Kolyaj
|
ушло полторы минуты после того, как нашёл за полтора часа
|
в этом и проблема. это одна "фича" сайта. а если пол сайта? сколько времени вы убьете что бы исправить за пару минут одну из "фич" ?
П.С. к библитечке не имею притензий.
|
|
30.01.2010, 22:11
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от PeaceCoder
|
в этом и проблема. это одна "фича" сайта. а если пол сайта? сколько времени вы убьете что бы исправить за пару минут одну из "фич" ?
|
Мне за это деньги платят, чтобы мой скрипт работал на таких вот кривых сайтах, владельцы которых платят деньги за использование этого скрипта. Так что лично у меня претензий нет В конце концов это, как минимум, интересно: найти баг на сайте, который сам по себе работает нормально, но твой скрипт на нем не работает, при этом доступа к сайту ты не имеешь.
|
|
04.02.2010, 03:34
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
function $$(selector, options) {
...
var value = typeof options.map == 'function' ? options.map.call(options.scope, el, [B]j++[/B]) : el;
...
reduceValue = reduceInitialized ? options.reduce.call(options.scope, reduceValue, value, [B]j++[/B]) : value;
а это так и надо?
UPD: и почему такой странное поведение с options.reduce: "Если параметр reduceInit не указан, то для первого найденного элемента reduce не вызывается." Можно какие-нибудь примеры использования?
UPD 2: по поводу более важных замечаний... вынес в отдельную тему
Последний раз редактировалось x-yuri, 04.02.2010 в 05:23.
|
|
04.02.2010, 13:00
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от x-yuri
|
а это так и надо?
|
Это баг, спасибо.
Сообщение от x-yuri
|
"Если параметр reduceInit не указан, то для первого найденного элемента reduce не вызывается."
|
Если reduceInit не указан, то им становится первый элемент. Это стандартное поведение.
Сообщение от x-yuri
|
Можно какие-нибудь примеры использования?
|
Использования reduce? Искусственный пример: сумма значений всех input[type=text] на странице (не запускал)
alert($$('input', {
filter: function(el) {
return el.type == 'text';
},
map: function(el) {
return parseInt(el.value) || 0;
},
reduce: function(sum, value) {
return sum + value;
}
}));
Читабельность данной функции меня самого не радует, но пока не придумал, как лучше переписать.
|
|
04.02.2010, 15:36
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от Kolyaj
|
Использования reduce? Искусственный пример: сумма значений всех input[type=text] на странице (не запускал)
|
а, т.е. сначала мэппим элементы в значения... Имхо, лучше всегда вызывать для каждого элемента, т.е. что-то типа
alert($$('input', {
filter: function(el) {
return el.type == 'text';
},
reduce: function(sum, el) {
return sum + parseInt(el.value) || 0;
}
}));
может и реализация проще станет
Сообщение от Kolyaj
|
Читабельность данной функции меня самого не радует, но пока не придумал, как лучше переписать
|
а идеи из соседней темы тебе не нравятся?
|
|
04.02.2010, 16:08
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от x-yuri
|
Имхо, лучше всегда вызывать для каждого элемента, т.е. что-то типа
|
Для такого случая как раз нужно указывать reduceInit: 0, т.к. иначе в первой итерации sum будет равна ссылке на элемент. По сути можно и условие из filter туда же засунуть, это на любителя, я предпочитаю разбивать задачи на более мелкие более простые подзадачи.
Сообщение от x-yuri
|
а идеи из соседней темы тебе не нравятся?
|
Это библиотечка, т.е. код с высокой реюзабельностью, поэтому для данного кода я ищу компромисс "эффективность кода -- максимально малый размер -- приемлемая читабельность" (в порядке убывания важности). Твой первый вариант без документации больше, чем мой с документацией. Со вторым вариантом проблема другая: там нужно сначала преобразовать NodeList в массив (раз проход), применить filter (два проход), применить map (три проход), reduce (четыре проход). (Хотя от первого прохода можно избавиться.) А эта функция для того и писалась, чтобы можно было выдернуть любую (почти) информацию из DOM-дерева за один проход.
|
|
|
|