
DjTarik
User-
Posts
698 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Store
Everything posted by DjTarik
-
Тогда меняй таблицу на див, ему position: relative; Относительно него абсолютно позиционируй слова. top: 50%; left: 0; (левому) right: 0; (правому) и обоим margin-top: "минус половина высоты";. Высоту строк сам задай и отцентрируешь слова внутри. Всё.
-
На сколько строк могут растягиваться ваши слова слева и справа? Там только по одному слову? Или может быть и в 2-3 строки?
-
Первое, что прищло на ум - если это элемент дизайна - то нафига там таблицы)
-
Однозначно. Тогда не прокатит. Нужно узнать у автора, зачем ему центрирование, и какова может быть высота.
-
Ячейке вертикальное выравнивание по центру, правому слову - "флот райт". Вроде всё, если я правильно понял задачу. Если нет - давайте скрин того, что необходимо получить.
-
Эмм... =) Не совсем) Забудь про кнопку "Отправить". Там проблем нету. Есть кнопка "Подсказка". Работает так: Я лошара, не знаю английского языка. Кликаю в поле, где нужно ввести верное слово. Думаю пару минут. Т.к. я лошара и ничего не знаю - я жму кнопку "Подсказка". Идёт запрос на сервак и я получаю в ответ первую букву слова. Как мне выбрать именно тот инпут, на который я кликнул? Вот в чём загвоздка. onblur() сработает сразу, я подсказку я могу захотеть получить и потом, когда уже написал слово, вернулся переписать и т.д. Поэтому "Подсказка" и сделана отдельной кнопкой. (есть сайт с похожим функционалом (вернее таким же, но без решения моей проблемы) если найду - покажу завтра)
-
Задача была такая (подробно): Есть текст (на иностранном языке), в нём некотоых слов не хватает, а на их месте - текстовые поля. Пользователь может заполнить поля - и, нажав на кнопку, проверить, правильно ли он их ввёл. С этим проблем нету) Вторая кнопка - "Подсказка". Работает так: я не знаю слова - жму на "подсказку". Нужно отловить, на каком поле был ввод (чтобы знать, подсказку к какому слову выводить), и только после нажатия на кнопку (НЕ само по себе и НЕ мгновенно) выполнить запрос. Каждое нажатие на кнопке выводит одну букву слова в поле, на котором был инпут) Вот такой "модный" скрипт)
-
Отправляю аяксом. Пишу на чистом JS, без фреймворков. Ну что-то типо этого и оставил: затирать буду по нажатию на кнопку. Но сам факт, что нельзя узнать, какой инпут был в фокусе последним меня не радует)
-
Тогда нужно обнулять и всё остальное - т.е. клик на тексте, и в любом другом месте... =) Есть такое дело. Я уже пол инета облазил - так что плюсы тоже есть) 1. Такая задача) 2. Проверка происходит на сервере. 3. Тогда возникает проблема, связанная с пунктом 1. Неужели нету какого-нить стандартного метода получения такого рода информации? Может можно как-нить отменить последние onblur() ? если потом происходит щелчок по кнопке?
-
Не понял тебя. Как мне потом узнать, где в последний раз был "фокус"? Так и делал - тогда если я через некоторое время на той же странице опять нажму на "Отправить" (ничего не вводя в инпуты) - я получу фокус последнего элемента, хотя он и не был выбран. Поэтому юзал onfocus() и onblur(). А задача такая: при отправке формы аяксом проверять именно то поле, на котором был фокус, а не всё форму.
-
Проблема такая: Имеется форма с кучей полей (input, к примеру). Допустим, в некоторые поля в любом порядке вносится информация. После нажатия на кнопку "Отправить" - нужно знать, какой из инпутов последним был в фокусе? Обыскал инет - ничего путного нету. Пробовал так: Всем полям - по 2-а события: onfocus() и onblur(). На onfocus() - заносим в переменную например id элемента. При выходе из фокуса - убираем. Проблема в том, что при нажатии на кнопку - фокус на инпуте тоже теряется. Не знаю, что делать...
-
Ребята, кто подскажет?
-
Не совсем понял про "итератор". Хотел сделать так: // <![CDATA[ // The document is loaded --> onload = function() { runingLine.iterator(); } // --> var runingLine = {}; runingLine.info = [ ['RunLineLrt', 50, 'ltr'], //['RunLineRtl', 50, 'rtl'] ]; runingLine.iterator = function() { for (var i=0; i<runingLine.info.length; i++){ var val_1 = runingLine.info[i][0]; var val_2= runingLine.info[i][1]; var val_3 = runingLine.info[i][2]; runingLine.initial(val_1, val_2, val_3); } } // RuningLine initialization --> runingLine.initial = function (id, value, direction) { // direction can be 'ltr' or 'rtl' --> obj = document.getElementById(id); wrapper = obj.parentNode; speed = Math.round(1000/value); // quantity of pixels in a second --> obj.style.visibility = 'visible'; if (direction == 'ltr') { posStart = wrapper.offsetWidth; // start coordinate --> posFinish = -(obj.offsetWidth); // finish coordinate --> runingLine.traffic.ltr(); } else if (direction == 'rtl') { posStart = -(obj.offsetWidth); // start coordinate --> posFinish = wrapper.offsetWidth; // finish coordinate --> runingLine.traffic.rtl(); } obj.onmouseover = function() { clearTimeout(timer); } obj.onmouseout = function() { if (direction == 'ltr') { runingLine.traffic.ltr(); } else if (direction == 'rtl') { runingLine.traffic.rtl(); } } } runingLine.traffic = new Traffic(); function Traffic() { // RuningLine traffic 'left to right' --> this.ltr = function() { if (posStart >= posFinish) { posStart-=1; // change coordinate --> obj.style.left = posStart+'px'; timer = setTimeout(arguments.callee, speed); } else { posStart = wrapper.offsetWidth; // start coordinate --> posFinish = -(obj.offsetWidth); // finish coordinate --> runingLine.traffic.ltr(); } } // --> // RuningLine traffic 'right to left' --> this.rtl = function() { if (posStart <= posFinish) { posStart+=1; // change coordinate --> obj.style.left = posStart+'px'; timer = setTimeout(arguments.callee, speed); } else { posStart = -(obj.offsetWidth); // start coordinate --> posFinish = wrapper.offsetWidth; // finish coordinate --> runingLine.traffic.rtl(); } } // --> } // ]]> Но не получилось. Получилось, что переписал код, а ошибка та же =) вот тут: runingLine.info = [ ['RunLineLrt', 50, 'ltr'], //['RunLineRtl', 50, 'rtl'] ]; мой массив с данными. Вот так: runingLine.iterator = function() { for (var i=0; i<runingLine.info.length; i++){ var val_1 = runingLine.info[i][0]; var val_2= runingLine.info[i][1]; var val_3 = runingLine.info[i][2]; runingLine.initial(val_1, val_2, val_3); } } хотел пробегать по массиву. Чего я не понимаю? O_o вот сылка для наглядности: http://tarik.kasperovich.ru/test_10/index.html Как верно построить цикл, что бы одна и та же функция двигала сразу несколько строк?
-
Да, именно это событие мне и надо. Спасибо, теперь всё понял. Только осталось продумать, почему дергается так заметно)
-
Там только про то, как узнать координаты и размеры. Мою задачу не решает.
-
И что именно мне там смотреть? (где-то пол года назад читал это всё, есть в закладках =). Про то как выяснить высоту и смещение я знаю. Как отследить прокрутку колёсиком и скроллом?
-
Ребята, я прекрасно знаю все эти способы) Верстаю не первый год. Тут вся задача именно в том, как это замутить на JS. Другие решения не интересуют.
-
Задача: Нужно сделать position: fixed; на JS. А конкретно - расположить див поверх всего в верхней части окна. Решил взять за основу position: absolute; и скриптом отсчитывать координаты. Как-то так: width: 100%; height: 30px; position: absolute; left: 0; top: 0; z-index: 100; obj.style.top = document.getElementsByTagName('html')[0].scrollTop + "px"; Проблема: Прокрутка. Что можно сделать, чтобы учитывать прокрутку колесом мыши, тяганием скролла и т.д. Или у меня изначально неверный подход?
-
Спасибо, понял. И самый главный вопрос: Нужно запустить одновременно 2 или 3 бегущих строки. В моём случае хотел сделать так: onload = function() { runingLine.initial('RunLineLrt', 50, 'ltr'); runingLine.initial('RunLineRtl', 50, 'rtl'); } // --> Но так не пашет. И по идее, это логично. Так как у меня там таймауты. Как (можно только в теории) такое делается? Каков принцип?
-
Спасибо, Помогло. Я и забыл о существовании window.parent. А как на счёт этого: 1. У меня есть объект "var runingLine = {};". Я от него создавал функцию "runingLine.initial()", чтобы как-то удобнее скомпоновать свой код. Это вообще верный подход? Где можно почитать об этом? (в смысле, как улучшить код и как грамотнее работать с объектами) 2. У меня есть объект "var runingLine = {};". Я от него создавал "runingLine.traffic = {};" и потом ещё "runingLine.traffic.rtl()" и т.д. Можно ли так делать, или это неграмотно? Т.е. меня интересует, как правильно и грамотно писать код.
-
Кстати - перестало работать в IE: Пишет, что не поддерживается вот это: parent = obj.parentNode; Не могу понять, что ж ему не нравится? O_o
-
Спасибо... Нашёл еще на хабре один плагин - вроде должен мне подойти.
-
Ну строка-то у меня работает. Проблема в другом: 1. У меня есть объект "var runingLine = {};". Я от него создавал функцию "runingLine.initial()", чтобы как-то удобнее скомпоновать свой код. Это вообще верный подход? Где можно почитать об этом? (в смысле, как улучшить код и как грамотнее работать с объектами) 2. У меня есть объект "var runingLine = {};". Я от него создавал "runingLine.traffic = {};" и потом ещё "runingLine.traffic.rtl()" и т.д. Можно ли так делать, или это неграмотно? Т.е. меня интересует, как правильно и грамотно писать код.
-
Абсолютно верно. Именно из-за того, что находится в контентной части. У меня тоже из-за таблиц и из-за списков. ХЗ что делать, как решать данную проблему...
-
А вот такая конструкция мне поможет? (function() { })( ); по идее должна. Типо обернуть свои функции в анонимную - и всё. Нигде пространство имён не нарушится?