html5 + javascript + css + jquery мои вопросы

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
kalobyte
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

html5 + javascript + css + jquery мои вопросы

Сообщение kalobyte »

это будет мой персональный бложик с быдловопросами по вебу
я начал учить яваскрипт и там что-то как-то не очень логично с точки зрения знаний о сях
я насчет функций и их определения
пока я не могу это написать, чтобы было всем понятно
сейчас посмотрю еще раз видео и напишу вопросы
тематические ответы только в форуме, в приват не пишите
Реклама
Аватара пользователя
blackx
Говорящий с текстолитом
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Re: html5 + javascript + css + jquery мои вопросы

Сообщение blackx »

веб - это такая штука, где все не очень логично :facepalm:
удачи в освоении :beer:
не буду спрашивать как ты до такого докатился :)))
Изображение only pure true norwegian blackx Изображение
Реклама
kalobyte
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Re: html5 + javascript + css + jquery мои вопросы

Сообщение kalobyte »

да я с 99го еще начал сцайт делать и изучать хтмл
сейчас просто подтягиваю свои знания
тематические ответы только в форуме, в приват не пишите
dbanet
Родился
Сообщения: 9
Зарегистрирован: Пн сен 26, 2011 17:09:00

Re: html5 + javascript + css + jquery мои вопросы

Сообщение dbanet »

В процессе изучения Javascript рекомендую jQuery вообще пока не трогать -- это своего рода настолько большой и жирный слой абстракции, что если начинать с него, то будет совершенно непонятен, во-первых, сам джс -- см. легендарный вопрос на stackoverflow "как сложить два числа с помощью jQuery" ;) , а во вторых, будет жуткая мания воткнуть во все места, куда лапы дотянутся, по модной библиотеке...
jQuery -- это write less, do more, но в процессе обучения есть зело вредная вещь.

Буду рад помочь.

UPD. А, и с вопросами, пишите, не пойму -- задам парочку наводящих ;)
Реклама
Эиком - электронные компоненты и радиодетали
kalobyte
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Re: html5 + javascript + css + jquery мои вопросы

Сообщение kalobyte »

ну пока вопрос такой по синтаксису нелогичному
http://www.w3schools.com/js/js_functions.asp

зачем нужно создавать функцию, почему нельзя вызвать алерт прямо в onclick?

чем отличается document.onload от window.onload?
---
http://www.youtube.com/watch?feature=pl ... q6o#t=1988
почему функция init и handlebuttonclick вызывается без скобок?
тематические ответы только в форуме, в приват не пишите
Реклама
Аватара пользователя
blackx
Говорящий с текстолитом
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Re: html5 + javascript + css + jquery мои вопросы

Сообщение blackx »

1) алерт можно сделать в onclick, просто когда захочешь туда что-то покрупнее алерта засунуть это будет малость неудобно. А в функцию легко добавить новых операторов.
2) емним первый происходит когда целиком загружается html (создается полное DOM дерево в памяти), второй - когда браузер готов что-то отобразить на экране - то есть, происходит раньше. Все используют window.onload, зачем document.onload нужен я не знаю :)
3) я так понял ты имеешь ввиду почему там вызывается init через "window.onload=init;" Отвечаю - это он не вызывается, это ссылка на функцию init присваивается полю onload объекта window. Когда происходит событие, браузер смотрит на значение этого поля и вызывает фукнцию, если на нее там есть ссылка.
Изображение only pure true norwegian blackx Изображение
Реклама
kalobyte
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Re: html5 + javascript + css + jquery мои вопросы

Сообщение kalobyte »

blackx писал(а):это ссылка на функцию init присваивается полю onload объекта window.
у меня мозги разрывает эта логика :facepalm:
хотя бы скобки поставили чтоли, чтобы было видно функцию
тематические ответы только в форуме, в приват не пишите
Аватара пользователя
blackx
Говорящий с текстолитом
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Re: html5 + javascript + css + jquery мои вопросы

Сообщение blackx »

мозг поначалу разрывает, но если копнуть глубже, то окажется, что все базируется на простых принципах

1) когда парсер браузера читает код JavaScript, в памяти сохраняется хэш-таблица всех встреченных им функций и переменных в виде пар имя-ссылка на объект. Ссылки на функции и переменные хранятся в одной куче.
2) когда объект в хэш-таблице - функция, его можно вызывать оператором (). () - оператор вызова функции. Принимает на вход ссылку на функцию function_ptr и набор аргументов [arg0, arg1, ...]. А возвращает он результат выполнения функции (то, что после return). Синтаксис такой: var result = <function_ptr>(<arg0>, <arg1>, ...);

то есть

Код: Выделить всё

var call = init();
это однозначный вызов init() с записью результата в call. а вот

Код: Выделить всё

var call = init;
это присвоение ссылки на init() переменной call. Все как с самыми обычными переменными.

Кстати, есть такой прикол, что можно отхватить г-на затерев сохраненную в хэш-таблице ссылку на функцию переменной с тем же именем и вот такой код например не будет работать:

Код: Выделить всё

function init() {
  alert("Hello!!!");
}

var init = 5;

init();
Изображение only pure true norwegian blackx Изображение
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Re: html5 + javascript + css + jquery мои вопросы

Сообщение Myp3ik »

В основе всё те же указатели на функции как в Си. Например, как имя массива является указателем на его нулевой элемент, так и имя функции является указателем на её точку входа.
Иван Сусанин - первый полупроводник :solder:
dbanet
Родился
Сообщения: 9
Зарегистрирован: Пн сен 26, 2011 17:09:00

Re: html5 + javascript + css + jquery мои вопросы

Сообщение dbanet »

kalobyte писал(а):ну пока вопрос такой по синтаксису нелогичному
http://www.w3schools.com/js/js_functions.asp

зачем нужно создавать функцию, почему нельзя вызвать алерт прямо в onclick?

чем отличается document.onload от window.onload?
---
http://www.youtube.com/watch?feature=pl ... q6o#t=1988
почему функция init и handlebuttonclick вызывается без скобок?
1. Суть в разделении декларативного HTML от императивного JS.

Плохо:

Код: Выделить всё

<div onclick="/* js code */"></div>
Хорошо:

Код: Выделить всё

<div id="banner"></div>
<script>
document.getElementById('banner').onclick=function(){
 alert('clicked!');
}
</script>
Если объявлять обработчик прямо в атрибуте тега, то можно прямо тама написать код функции: alert('clicked');, -- и это нормально, если не брать во внимание, что в принципе объявлять обработчики в атрибутах -- плохо.
Функция, присвоенная .onclick дом-элемента вызывается при совершении события click, но даже если попытаться просто присвоить alert:

Код: Выделить всё

document.getElementById('banner').onclick=alert
, то указать аргументы функции alert не удастся, то есть функция будет вызвана без аргументов (по крайней мере, без нужного нам).
Что бы это обойти, мы либо создаём именованую функцию:

Код: Выделить всё

function handler(){ ... }
и присваеваем её свойству onclick:

Код: Выделить всё

document.getElementById('banner').onclick=handler
, либо создаём безымянную функцию, сразу же присваиваем её свойству (наверху).
Т. е. на самом деле function(){} создаёт объект Функция и возвращает ссылку на неё.
function name(){} так же создаёт функцию, но при этом она именована: name.name //name
и name уже ссылается на неё.

Важно понимать, что функции в JS -- такие же объекты, как и любые другие:

Код: Выделить всё

function foo(){
 //...
}
foo.prop="bar";
foo.prop; //bar
Так же важно понимать, что функции в JS, в отличие от многих других языков могут быть созданы в runtime, и с этим возникает несколько интересностей:
все объекты в области видимости, в которой создаётся функция, доступны во время исполнения функции

Код: Выделить всё

var bar="a";
var foo=function(){
return bar;
}
bar="b";
foo(); //b!!!!!
в создаваемой функции создаётся своя, новая, другая область видимости, объекты в которой недоступны из родительской, но не наоборот!

Так же следует понимать, что объект не может быть присвоен какой-нибудь переменной. Вообще.
Даже если прямо написать var variable=new SomeInterestingClass();, то будет создан объект без имени, будет взят адрес и присвоен variable, а т. к. операции разыменовывания var variable=*(new SomeInterestingClass()); в JS нема, то его не разыменуешь (плюсишник знает, что new берёт адрес, я же далее не знаю, но знаю, что в JS оператор new создаёт новый анонимный объект new Object() и устанваливает его в качестве контекста вызова функции SomeInterestingClass так, что он доступен из неё по ссылке this).

Код: Выделить всё

var obj1=new Object();
var obj2=obj1;

obj1.bar="foo";

console.log(obj1.bar);
console.log(obj2.bar);

obj2.bar="oops";

console.log(obj1.bar);
console.log(obj2.bar);
Вывод: foo foo oops oops.
Объекты надо копировать (когда надо. А когда надо?) явно.
К скалярам это не относится.

2. document.onload не следует использовать. Вообще.
Везде следует использовать window.onload. При этом важно понимать, что это событие произойдёт после подгрузки ВЕГО, что только можно.
Это -- наиболее безопасное и раннее время загрузки, однако если нужно ещё раньше (для быстрее), то в большинстве случаев, когда уже надо оперировать DOM, можно ждать события DOMContentReady. Обработчик добавляется с помощью addEventListener().
kalobyte
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Re: html5 + javascript + css + jquery мои вопросы

Сообщение kalobyte »

внезапно я :)))
есть тут гуры бд типа mysql?
несмотря на то, что много лет назад в пту я сдал экзамен на отлично, я до сих пор нихера не понимаю в бд и проектировании оных

вот такой простой пример, а потом я скажу, что я не понимаю

возьмем таблицу стран и таблицу городов
в каждой стране может быть много городов, но и один город может быть в разных странах
например в пиндосии есть масква и берлин :shock:

нарисуйте мне схему в редакторе, чтобы это было наглядно
нужна ли 3я таблица связей?
напишите sql запрос на выборку
1 например показать все города из страны "а"
2 показать, в какой стране есть город "б"

а потом я скажу, какой момент я не понимаю, а то описать это даже не могу :oops: :facepalm:
тематические ответы только в форуме, в приват не пишите
Аватара пользователя
blackx
Говорящий с текстолитом
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Re: html5 + javascript + css + jquery мои вопросы

Сообщение blackx »

Для твоего примера отношение многие ко многим не нужно, Москва в США и Москва в России это все-таки разные города. Тут нужно отношение многие к одному - делается без таблицы связей, через внешний ключ.

Классический пример отношения многие ко многим - книги и авторы. У книги может быть много авторов, у автора - много книг. В таком случае нужна таблица связей.

Быстрое гугление подсказывает, что запрос делается через простой inner join, безо всяких хитростей.

http://stackoverflow.com/questions/8325 ... ny-to-many

Можешь создать на своей бд эти таблицы и проверить как оно работает.
Изображение only pure true norwegian blackx Изображение
kalobyte
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Re: html5 + javascript + css + jquery мои вопросы

Сообщение kalobyte »

ну тут не столько важен тип связи
я просто не пойму, вот эта связь в дизайнере - она как-то в коде структуры бд отображается или она чисто только наглядное пособие при разработке?
а весь запрос надо самому писать с учетом этого пособия?

мне почему-то кажется, что движок бд через эти связи сам знает, как по цепочке связей вытащить данные из связанных таблиц
или я туплю все же?

потом что когда я делал реверс бд вордпресса, то никаких стрелочек в дизайнере я не увидел :(
и как мне понять, что таблица а связана с таблицей б? смотреть в пхп коде сам запрос?
как мне узнать исходя только из этих таблиц сам запрос, чтобы например сделать экспорт постов с категориями и тегами?
тематические ответы только в форуме, в приват не пишите
Аватара пользователя
blackx
Говорящий с текстолитом
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Re: html5 + javascript + css + jquery мои вопросы

Сообщение blackx »

Связи - это лишь способ гарантии целостности данных базы - как и транзакции, например. Связи хранятся вместе с остальной информацией о структуре БД (схеме), где именно зависит от субд. Фактически связи добавляют дополнительные проверки во время обработки запроса, и субд вернет ошибку если твоя модификация нарушает какую-то связь. Вполне можно обходиться без связей вовсе (кроме того, в нагруженных системах их вообще избегают, перекладывая задачу контроля целостности на программный код).

Из этого следует, что ты должен составлять запрос так, как будто никаких связей нет, полностью и однозначно прописывая условия выборок для JOIN-ов.

Связи ты можешь посмотреть отреверсив схему на диаграмму, лучшего способа я не знаю :) Я уверен, в инете можно найти обзор структуры БД вордпресса и не ломать себе голову что там и куда.
Изображение only pure true norwegian blackx Изображение
Cheba
Мучитель микросхем
Сообщения: 447
Зарегистрирован: Ср сен 26, 2012 14:12:47
Откуда: Київ

Re: html5 + javascript + css + jquery мои вопросы

Сообщение Cheba »

От себя добавлю : mysql - убогая недоСУБД, и там никаких таких "связей" между таблицами нет. По крайней мере в бесплатных версиях с MyISAM.

А продумывать запросы всё равно придется самому.
kalobyte
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Re: html5 + javascript + css + jquery мои вопросы

Сообщение kalobyte »

blackx писал(а):Из этого следует, что ты должен составлять запрос так, как будто никаких связей нет, полностью и однозначно прописывая условия выборок для JOIN-ов.
вот это меня и парило
вроде бы рисуеш себе связи стрелочками в редакторе, а потом оказывается, что они тебе никак не помогут :(
blackx писал(а):Связи ты можешь посмотреть отреверсив схему на диаграмму
так если в вордпрессе эти связи нигде не хранятся, то и реверс не поможет, я пробовал уже

может тогда подкинет кто генератор данных для бд разных типов
тематические ответы только в форуме, в приват не пишите
Аватара пользователя
blackx
Говорящий с текстолитом
Сообщения: 1518
Зарегистрирован: Пт дек 28, 2012 21:56:46
Откуда: St. Petersburg

Re: html5 + javascript + css + jquery мои вопросы

Сообщение blackx »

kalobyte писал(а):так если в вордпрессе эти связи нигде не хранятся, то и реверс не поможет, я пробовал уже
Так я тебе и говорю, они не нигде не хранятся, их там тупо нет.

А что ты имеешь ввиду под генератором для бд?
Изображение only pure true norwegian blackx Изображение
kalobyte
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Re: html5 + javascript + css + jquery мои вопросы

Сообщение kalobyte »

blackx писал(а):А что ты имеешь ввиду под генератором для бд?
не генератор бд, а генератор фейковых данных для заполнения бд
я погуглил и оказывается такой инструмент есть и я даже скачал пару, но может быть есть что-то, что лучше моего?

например мне надо сгенерировать 10 стран по 10 городов
руками это гиморно, а так есть готовый софт
тематические ответы только в форуме, в приват не пишите
dbanet
Родился
Сообщения: 9
Зарегистрирован: Пн сен 26, 2011 17:09:00

Re: html5 + javascript + css + jquery мои вопросы

Сообщение dbanet »

Дык скриптом же. Десять стран по десять городов -- это два вложенных цикла.
Хоть на ПХП, хоть на шеллах. Зачеманама всякие сафтина? :shock:
kalobyte
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Re: html5 + javascript + css + jquery мои вопросы

Сообщение kalobyte »

:facepalm:
зачем мне велосипеды, если такие генераторы есть и уже содержат нормальные названия городов, имена и прочие данные
тематические ответы только в форуме, в приват не пишите
Ответить

Вернуться в «Интеграция с ПК»