Ну как минимум ты проигнорировал момент с Я не знаю, где у тебя кнопка стоит в коде страницы, но, быть может, ты на нее вешаешь обработчик до того, как она вообще объявляется в DOM. В чистом JS обработчики цепляют в самих элементах DOM, либо вешают инициализацию своих макарон на onload у body. У JQuey парадигма немного другая, и для ее реализации обязателен Код (Text): $(document).ready , который означает, что код внутри этой функции должен быть выполнен только после завершения сборки DOM-а. И да. А саму JQuery ты подключить не забыл? И что пишет тебе консоль отладочная?
Код (Text): $(document).ready прописал, но результат не меняется. И, кстати, можно писать сокращенно: Код (Text): $(function(){ кнопка там же, как и в примере выше, т.е. до обработчика JQuery. нет, библиотека подключена. молчит, как партизан )) А с этим вопросом разобраться не попробуешь?
Эхехе... Внес правку всего в две строчки... Как и было сказано раньше - просто надо было знаки поменять. В коде комменты есть, где были правки. Теперь считает, сколько осталось до введенной даты. Вбей там что-то типа 1 jan 2016.
Ок. Спасибо, вроде работает, но не могу врубиться полностью в скрипт, замудрено слишком. В функции start: Код (Text): startFrom = +new Date() + stopwatchValue stopwatchValue - это что? Почему стоит знак "+" перед new Date() ? document.TestForm.stopwatch.value - здесь хранится дата из формы, верно?
Знакомся, это JavaScript, как он есть. Самый упоротый из неэзотерических языков среди тех, что я когда-либо видел. На самом деле скрипт проще некуда. Просто, если с JS не приходилось работать, так сказать, по-взрослому, его очень трудно читать и осознавать причинно-следственные связи. Просто надо читать код на JS как JS, а не как PHP. текущее значение таймера. То, сколько он уже отсчитал в миллисекундах. Потому что "new Date()" вернет объект. Объекты нельзя складывать с числами. Но у объектов можно прописывать то, как они должны интерпретироваться в зависимости от контекста вызова. У всех встроенных классов в JS это реализовано. Ставя + перед new Date() я говорю, что мне нужен не объект Date, а его скалярная интерпретация, которую можно вставить в обычное арифметическое выражение, то есть просто количество миллисекунд, которое он хранит. Ты такие плюсики перед всем подряд будешь часто замечать в JS. Нет, это прямое обращение к форме. Внимательно приглядись - это же просто обращение к DOM. В документе обратиться к форме TestForm, внутри которой есть элемент stopwatch, у которого есть значение value.
вот ты загнул! ))) да уж, это точно не PHP )). До знакомства с JS, думал, что PHP более замороченный. Видать, ошибся )). ок, доходчиво, спс.
PHP - простейший из языков, которые я когда-либо встречал. Миф, что JS - это простенький прикладной язык, на котором можно писать левой пяткой на коленке не более чем миф, распространяемый теми, кто это где-то слышал, но сам язык знать не знает. Вот тебе сравнение - чтобы начать кодить на PHP (разумеется, это не первый язык, с которым пришлось работать), мне понадобилось потратить меньше недели в расслабленном режиме. Разумеется, речь идет не о полных днях, а о паре-тройке часов по вечерам. Чтобы освоить JS, разумеется, на уровне, когда можно начать, не более того, я потратил 2 недели отпуска(полные дни) + еще 2 недели вечеров сверх того. И все это в режиме "хардкор". Чтобы просто начать на нем кодить более менее уверенно. Речь о каком-либо мастерстве даже не поднимается. Добавлено спустя 2 минуты 59 секунд: гугли "эзотерические языки программирования", поймешь о чем я.
JQuery - проще, это усовершенствованный JS. Чтобы не выстраивать такие цепочки: Код (PHP): document.TestForm.stopwatch.value ..в JQuery просто обворачиваешь нужный элемент в доллар и делаешь, что нужно )
ого. ну лол чо. выборка по гетЭлементБайЧТОНИБУДЬ в разы быстрее бакса потому что бакс выбирает всё дерево (даже произведение всего дерева) и далее его отфильтровывает по переданному условию. это не может быть быстрее выбора по "чо-нибудь".
Не спорь о том, что не до конца понимаешь с тем, кто понимает. Лучше, в таком случае, прислушаться. Сейчас полным полно горе-программистов, которые пытаются кодить, не понимая, как работает машина, с которой они пытаются договориться. Не зная о том, какое представление в памяти имеют данные, что они в нее пихают, как работают вызовы функций, что такое скоупы и стеки и тд. Это ужасно и грустно. Они, порой, люто насилуют комп из-за этого не знания, городя города, которые можно сделать иначе и проще. JQuery - хорошая либа. Но она породила новое явление - горе-программистов, которые пользуются библиотекой для языка, не зная как работает сам язык и, опционально, не понимая, как работает машина, с которой они пытаются договориться. И это - стыд и позор. Никто не говорит, что не надо пользоваться JQuery, я сам пользуюсь ей, мне безумно нравится, как там реализован AJAX, например. Хотя я и подумываю запилить собственную реализацию AJAX на схожий манер, а то заметил, что кроме AJAX-а, ничем пока в ней и не пользуюсь, а это крайне неэффективное использование такой жирной кобылы, но не суть. Программист - это инженер. Говорить, что JS не нужен, потому что есть JQuery, это все равно что говорить, мол C++ не нужен, потому что есть QT. Или что дому фундамент не нужен, потому что есть крыша. Нельзя гордиться невежеством.
Ну раз ты такой продвинутый, то может сможешь разобраться по существу моего вопроса? А именно: обработчик события срабатывает, если убрать тэги: Код (PHP): <form></form> Если тэги оставить, то обработчик не срабатывает, как нужно, консоль при этом молчит: пример1 - тут работает пример2 - тут обработчик выдает результат, но кратковременно. Нужно, чтобы на кнопке после клика появлялась новая надпись и не пропадала.
в какой-то момент я тоже заметил что кроме аякса ничем особо и не пользуюсь. тогда написал собственный коротенький класс для аякса, увесистый селектор заменил на тонну функций getElementBy*. приложение стало работать быстрее раз в 40. вот только кодить приходится много и страшно. но мне как-то производительность приложения показалась важнее производительности программиста.
вот тут как нельзя кстати приходятся слова суриката про программистов, которые используют крутые либы, но не понимают как работают основы - не важно с этими либами или без них. просто не понимают. когда ты жмешь в кнопку, то у тебя из неё вылетает событие отправки формы, которое ловится той формой, в которую элемент "кнопка" погружен. или не ловится, если ты создал кнопку вне формы. во втором случае у тебя форма есть хоть и пустая и она-то и "отправляется". во вникуда, но "отправляется". поэтому ты кратковременно видишь результат а потом ой. решение твоей проблемы - не использовать форму если она там реально не нужна, либо повесить заглушку на событие отправки формы. ну и основы изучить да.
Значит нужна заглушка. Форма нужна для связи с базой данных, откуда будет браться время для таймера. Сам таймер хочу отображать в кнопке после клика. Спасибо.
Вот тебе подсказка - можно переопределить обработчик формы, чтобы, вместо отправки, он вызывала твою JS-функцию. А оттуда уже делай что хочешь с этими данными. Хоть в аяксы их упаковывай, хоть прокидывай дальше до сервера в нормальном режиме, формируя post.
привет, посмотри, плиз, этот простой примерчик. Там при нажатии на кнопку должна добавляться в таблицу новая строка со столбцом, где я хочу выводить время. Изначально под кнопкой уже есть одна ячейка с цифрой 1. Но после нажатия на кнопку новая ячейка не добавляется, а заменяется уже существующая. Как добавить новую ячейку (а не заменить), при этом обязательно в ней должно быть время. Т.е. кликнул на кнопку - получил ячейку с временем, кликнул еще раз - плюс еще ячейка и т.д.
Вот есть у тебя: Код (PHP): var rez = $('.tab').append(st); var now = new Date(); $(rez).html(now); Построчно: 1) Вернуть в переменную rez элемент DOM класса .tab, к которому был добавлен элемент st; 2) Присвоить переменной now текущую дату; 3) Заменить содержимое элемента DOM класса .tab на содержимое переменной now; Там не заменяется существующая. Там вообще все содержимое таблицы стирается, и вместо него ставится now. Отлаживай код, глядя не на страничку, а в код страницы + отладчик JS на стороне браузера. И не пиши ты на JQuery. Научись сначала на JS. Ты вот в курсе, что такое замыкания? Как сохранять локальные переменные в их контексте? Нет? А ты этим пользуешься в своем коде, между прочим. JQuery не освобождает тебя от таких вещей. Сначала изучи язык, потом библиотеку.
Нет, не исправил. У тебя при клике на кнопку, конечно, добавляется новая строка, этого не отнять. НО, при этом значения во всех строках выставляются одинаковые. Потому что: $('.tab tr').html(now); == "во все теги tr внутри элемента с классом .tab замени содержимое на now"; Добавлено спустя 5 минут 49 секунд: Попробуй так. Код (PHP): $(document).ready(function () { $("form").submit(function(){ $('.tab').append('<tr><td>'+new Date()+'</td></tr>'); return false; }); }); Но ты так и будешь страдать от каждой подобной мелочи, просто не зная, что можно делать в JS, а что нельзя. ТЫ же сейчас кодишь вслепую. Не понимая того, что делаешь. Это очень неправильно. Добавлено спустя 49 секунд: Как минимум, у меня к тебе вопрос - а на кой черт ты вообще используешь submit там? Почему не использовать обычную кнопку и событие onclick от нее? Так же правильнее.
нужна форма для отправки данных в БД. Из БД хочу брать значение времени для таймера. Таймер планирую выводить в ячейке таблицы. Т.е. на кликнул на баттон, данные ушли на сервер, оттуда пришел ответ и запустился нужный таймер в подгруженной ячейке. Правда, еще не знаю, как в дальнейшем буду реализовывать вывод этих таймеров в подгруженные ячейки таблицы, ведь в исходном коде этих подгруженных ячеек нет. Например, пользователь зашел на страницу, запустил таймер на несколько часов, затем вышел из интернета, и если опять зайдет на эту страницу, то таймеры загрузятся из БД в подгруженные ячейки таблицы. Добавлено спустя 2 минуты 9 секунд: учебники по JS и jquery читаю, но читать - мало. Нужно кодить понемногу, набивать шишки, без практики очень быстро забывается все, что прочитал в книжках. Мое мнение такое ))
Вот, читай и кодь. Мне этого хватило, чтобы потом сесть и написать собственный спрайтовый 2Д-движок для HTML5-Canvas с поддержкой многослойного рендеринга, анимации и прочей веселухи. Учебник крайне годный. Очень.