Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Важные моменты в программировании на JavaScript, Неординарные ситуации 
:(
    Опции темы
Aliance
Дата 6.6.2005, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 17
Всего: 137



Думаю, необходимо создать такую тему, где бы описывалось, что нужно знать и помнить человеку, программирующему на JavaScript.

Итак, прежде всего это контейнер, в котором все чудо и происходит.
Лучше всего писать полностью, так:
Код

<script type="text/javascript" language="JavaScript">
<!--

/* тут непосредственно сценарий */

// -->
</script>


Аттрибут type указывает на то, что это сценарий JavaScript (как MIME-тип)
Необязательный аттрибут language сообщает веб-браузеру, на каком языке написан сценарий. Это нужно для тех случаев, когда браузеры, не понимающие указанный язык, пропускают этот контейнер.
Значения:
  • JavaScript
  • VBScript
Спецификация HTML4 отвергает этот аттрибут, и отдает предпочтение аттрибуту type

Далее, часто возникает ситуация, когда необходимо динамически добавить тег <script>. Обычно дилетанты делают это так:
Код

document.write('<script>');
document.write('/* js */');
document.write('</script>');

Но это не есть корректно, т.к. интерпритатор JS, встречая закрывающий тег <script> - прекращает работу сценария, остальное выводится как код HTML. Соответственно правельно будет так:
Код

document.write('<script>');
document.write('/* js */');
document.write('<\/script>');
// или
document.write('<script>');
document.write('/* js */');
document.write('</sc'+'ript>');


Далее, стоит комментаровать свои сценарии и делать удобочиваемыми:
Код

function qwerty() { alert('jjjjj'); var a = b; var c = d; }

можно и нужно записать так:
Код

function qwerty() {
   alert('test');
   var a;
   id (a) {
      alert('aaa');
      if (true) {
         alert('true');
      }
  }
}


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

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

function do() {
   alert('test');
}

Т.к. do - глобальный метод. Писалось о необходимости в наличии while (do/while - цикл)

Итак, постим сюда свои наблюдения и находки, изощрености и прочее. smile
PM MAIL WWW ICQ Skype   Вверх
Opik
Дата 6.6.2005, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



Не помню, когда именно возникает. Вроде при несовпадении типов, например:
Код

<script>
   function plus()
   {
       el = document.getElementById("c");
       all = c.value + 1;  
       alert(all);
   }
</script>
<input type="text" id="c" value="10" /> <input type="button" value="+1" onclick="plus()" />

решение:
Код

<script>
   function plus()
   {
       el = document.getElementById("c");
      // parseInt - приводим к типу Число. и работаем с ним.
       all = parseInt(c.value) + 1;  
       alert(all);
   }
</script>
<input type="text" id="c" value="10" /> <input type="button" value="+1" onclick="plus()" />

PM MAIL Skype   Вверх
Aliance
Дата 6.6.2005, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 17
Всего: 137



Цитата(Opr @ 7.6.2005, 00:42)
      el = document.getElementById("c");
      all = c.value + 1;

может так:
Код

var el = document.getElementById("c");
var all = el.value + 1; 

Но естественно, что результат будет не таким как ожидалось. Описал тут:
http://forum.vingrad.ru/index.php?showtopi...ndpost&p=432827
PM MAIL WWW ICQ Skype   Вверх
Opik
Дата 6.6.2005, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



Aliance
да, я знаю. а чем плохо, что переменные становятся глобальными?
а разница toNumber или parseInt, второе как то мне больше нравится.
PM MAIL Skype   Вверх
Aliance
Дата 6.6.2005, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 17
Всего: 137



Цитата(Opr @ 7.6.2005, 00:54)
а разница toNumber или parseInt

она есть, я приводил примеры. Сам с таким столкнуля =)

Цитата(Opr @ 7.6.2005, 00:54)
а чем плохо, что переменные становятся глобальными

Это не плохо. Скорее обычные меры предосторожности. Ведь глобальную переменную создавать нужно только специально. Иначе можно забыть про это и навредить себе 8))
PM MAIL WWW ICQ Skype   Вверх
Opik
Дата 6.6.2005, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



Aliance
ок, учту. (про глобальные переменные.).
Однако parseInt - аналог intval в PHP. Она поступает полностью аналогично. Я выбрал её не случайно.
PM MAIL Skype   Вверх
Sardar
Дата 7.6.2005, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6984
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 2
Всего: 317



Цитата(Opik @ 6.6.2005, 22:54)
а чем плохо, что переменные становятся глобальными?

Если функция вызовет сама себя рекурсивно или где в других функцих используються те же имена(часто итератор i) то появляються трудно находимые глюки smile

Помимо обьявления локальных переменных в функциях (var peremennaja), не стоит забывать что JS это обьектно - (*) язык (звёздочку понимайте как хотите лишь бы вам думать не мешало smile ). Если пишем что то, то создавайте сущности описывающие процесс или обьект. Например меню(контейнер), в меню опции и т.д. а не просто массивы. Ваш код станет более прост и читабельней, ведь:
Код
menuSet.show("submenu3"); //читаеться проще чем 
show_menu(menuset["submenu3"], true);

Естественно код становиться короче и проще, ведь код в каждом обьекте будет описывать всё необходимое для работы только с этим "типом" обьекта.

Полезно не пользоваться старыми способами адресаций типа: document.all или просто document.что_либо. Во первых это ведёт к не переносимому на новые платформы коду. Во вторых коллекции содержат элементы не только по идентификатору, но и по имени, в результате получаем коллизии имён/ИД. Нет стандартного действия в такой ситуации, браузер может выдать список всех элементов с таким именем/ИД или просто первый встречный элемент.
Вывод: задаём уникальные идентификаторы(а это не всегда нужно smile ) необходимым элементам, выбираем сие по document.getElementById

На счёт идентификаторов третий совет: елси вы генерите скриптом кучу кода(допустим меню), то не задавайте вашим субэлементам идентификаторы типа ("префикс_"+счёчик). Гораздо проще положить все элементы в дополнительный контейнер(например div) и работать с элементами через W3C DOM. Другими словами задайте правильную логичную структуру тому что вы генерите и это сыграет вам на руку.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Dave
Дата 28.7.2005, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 17.6.2004

Репутация: нет
Всего: 1



Цитата(Sardar @ 7.6.2005, 01:34)
Цитата(Opik @ 6.6.2005, )
а чем плохо, что переменные становятся глобальными?

Если функция вызовет сама себя рекурсивно или где в других функцих используються те же имена(часто итератор i) то появляються трудно находимые глюки smile

то есть в ф-ии когда пишем var variable_name
то переменная локальная а если без var то глобальная, я правильно понял ?
а как поступить с итератором i в ф-ии чтобы он был локальным? написать предварительно var i =0; ?


...кажется нашел, в ф-ии в цикле можно так написать
Код

 for(var i=0; i<arguments.length; i++) ...


Это сообщение отредактировал(а) Dave - 28.7.2005, 12:33
PM MAIL   Вверх
Гость_12345
Дата 7.12.2005, 15:14 (ссылка)    |    (голосов: 2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Приёмы в написании кодов JS.
Для сокращения длинных записей и улучшения читаемости:
Код

1. d=document;

2. Ev='if(!e)e=event;';
   d.onclick=function(e){eval(Ev); ... ( обращаться к event через e) } 
    //--для кроссбраузерного доступа к событию в обработчике события
   <... onClick=func(event) ...>

3. function func(e){ ... ( обращаться к event через e) } 
    //--для вызываемой функции по событию

4. <... onClick=return!1 ...> -- вместо <... onClick="return false" ...>
   //вообще, <... onClick=любой_текст_JS_без пробелов_не требует_кавычек ...>
   //например, <... onClick=a=b=12345;alert('click\x20on\x20tag')>

5. d.ID=function(I){return this.getElementById(I);}
    //--чтобы вызывать не document.getElementById('...'), а
   d.ID('...')

6. А=[1,2,3];        //а не A=new Array(1,2,3);
   A=[];        //а не A=new Array();
   Im=[new Image(),new Image()];    //а не Im=new Array();for(i=0;i<2;i++)Im[i]=new Image();

  Вверх
Гость_12345
Дата 7.12.2005, 15:15 (ссылка)    |    (голосов: 2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Код
7. if((Src=FF?e.target:e.srcElement).id.charAt(0)!="x") ... ;
    //--объявлять переменные по ходу использования, а не заранее,как в 
    Src=FF?e.target:e.srcElement;
    if(n.id.charAt(0)!="x") ... ;

8. if(self.win1 && win1.document && win1.document.formInWin1) ...;
    //--пользоваться невычислением выражений после && , если первый аргумент false

9. alert([12,23,aaa,xxx]);    //чтобы не писать +" "+ вместо запятой.

10. v='visible';hid='hidden';
    (...).style.visibility=v;    (...).style.visibility=hid;

11. setTimeout(func,500);    //запуск функции с задержкой без аргументов

12. (function func(){alert(999);})()    //запуск функции в контексте объявления

  Вверх
Sardar
Дата 7.12.2005, 17:00 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6984
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 2
Всего: 317



Цитата
Для сокращения длинных записей и улучшения читаемости:

Не согласен, d менее читаемо чем document, наработано опытом smile

2) а зачем eval то?

4) одна из самых плохих привычек - опускание кавычек. Такой код не читаем стандартными парсерами, это кстати одна из причин создания XHTML. Совет вем: не опускайте кавычки и не сокращайте логичное и ясное false до !1

5) DOM придумывался как стандартный интерфейс к деревьям документов. Имена методов долзны запоминаться как они есть, т.к. помимо JS есть и другие языки, где W3C DOM актино используеться и имена те же самые. document.getElementById сразу ставит все точки над i, d.ID вводи в заблуждение выигрывая несколько символов в коде... не на том экономишь smile

7) люблю так писать, но большинство народу не любят такую запись, т.к. менее читаема. Согласен с ними, но по прежнему пишу кратко smile

9) можно и так alert([12,23,aaa,xxx].join(' ')); с пробелом, кстати технически этот код не обязательно тeрбует больше ресурсов чем просто со строками, в своём Trilobite Scripting Language (скриптовое окружение для eZ80) выбрал стратегию экономить на памяти, с массивом код по идее должен отрабатывать быстрей. Не знаю как реализованно в JS браузера.

10) и зачем эти пару символов экономить, нужно думать над алгоритмом, писать эффективно. Сэкономленные пара байт не заметны для пользователя, даже если он на самом убогом модеме, за то ты сам будешь долго материться если придёться переделывать такой код года через полтора smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Ciber SLasH
Дата 7.12.2005, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1811
Регистрация: 9.11.2004
Где: Russia->" Питер"

Репутация: нет
Всего: 67



Полностью согласен с Sardar.

2Гость_12345:
Твой код иногда сложновато разобрать, приходится повторно смотреть, что же это за d.<что-то>. Конечно я согласен с: "Если писать только для себя скрипты и разработать определённые правила (типа: d - это document; d.ID - это document.getElementById), то конечно можно писать как можно меньший код, опуская точки с запятой, придумывать ещё какие-то сокращения, бороться за байты в документе... Но если твой код прийдётся смотреть другим людям, то у них явно возникнут проблемы с пониманием твоего кода."
PM   Вверх
Гость_12345
Дата 13.12.2005, 17:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Sardar: я перечислил выработанные для себя правила, например, знаю, что в своём коде не буду занимать имена d, v, hid, d.ID и некоторые другие под другие переменные. Некоторая надстройка над языком, принятая 1 раз и помогающая не отвлекаться на длинные имена и длинные выражения с длинными именами. У других - другие условности. Когда читаешь чужой код и есть желание разобраться, приходится учитывать.

2) а зачем eval то?
Чтобы 1 раз написать вверху кодов, а потом знать, что в каждом обработчике приводится объект event к имени "е". Обработчиков много, и тогда несущественные формальности мешают читать суть.

alert([12,23,aaa,xxx].join(' ')); не хочу ради краткости, при отладке.

5) DOM придумывался... document.getElementById), ...
Другие языки будут с этими проблемами разбираться сами, а здесь она решается так.

> нужно думать над алгоритмом, писать эффективно
согласен, а эти приёмы мне помогают читать алгоритм в коде.

4) одна из самых плохих привычек - опускание кавычек. Такой код не читаем стандартными парсерами...
пока не использую парсеры и не планирую использовать их, не собираюсь утруждать себя следованию стандартам, написанным не для живого HTML. Так же, как var имя_переменной=...; в функциях. Когда задача перерастёт установленные рамки, это будет заметно по задаче, тогда и переучимся. Пока этого нет, не надо засотрять текст несущественным. Сравните: мы произносим слова так, чтобы это было понятно собеседнику, а не так, как написали бы то же самое в книге, чтобы удовлетворить всем. На этом пути начал Перл, но он же и рухнул под массой условностей - $i="$j$k";print$i; Ничего - взяли лучшее и пошли дальше.

Ciber SLasH У меня тоже возникают проблемы, когда экран засорён длинными выражениями с малым содержанием, какого размера экран бы ни был.
  Вверх
Sardar
Дата 14.12.2005, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6984
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 2
Всего: 317



Гость_12345 - явно минималист smile
Интересно что сам таким был, пока не столкнулся с коллективной разработкой. Не под каким либо давлением, а "по собственному разумению" врдруг приходишь к тому что писать нужно ясно и не забывать о коментариях, которые порой больше чем сам код smile

В любом случае я не советую другим пользоваться твоми приёмами, больше проблем.

Цитата
Чтобы 1 раз написать вверху кодов, а потом знать, что в каждом обработчике приводится объект event к имени "е". Обработчиков много, и тогда несущественные формальности мешают читать суть.

Код что в eval можно сразу вписать в функцию, всё равно меняться не будет, лишняя потеря в производительности.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Гость_12345
Дата 14.12.2005, 13:41 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











> Код что в eval можно сразу вписать в функцию
Когда речь о производительности, а не о наглядности, то другое дело. И d.ID придётся развернуть.

О комментариях не забываю, до коллективной работы не доходил. : )
  Вверх
Innuendo
Дата 6.1.2006, 01:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 24.12.2005
Где: Молдова

Репутация: нет
Всего: 6



а вот я часто себя ловил на document.write('text')
когда в text были аппострофы.. не понимал где ошибка smile... в таких случаях надо заводить вместо аппострофа его код: user posted image


--------------------
=)
PM MAIL ICQ Jabber   Вверх
Ciber SLasH
Дата 26.2.2006, 06:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1811
Регистрация: 9.11.2004
Где: Russia->" Питер"

Репутация: нет
Всего: 67



2Innuendo:
Ну это не апостроф, а одинарная кавычка, а апостроф имеет код & 096;
Кстати, если встречается одинарная кавычка или другие спец. символы, которые портят целостность данных, то эти спец. символы можно экранировать подстановкой перед спец.сим. обратного слэша \.
Т.е. будет так: \'
А ещё можно обрамить строку, в которой встречается одинарная кавычка, в двойные кавычки: "Д'Артаньян" или 'Д\'Артаньян'.

Это сообщение отредактировал(а) Ciber SLasH - 26.2.2006, 07:01
PM   Вверх
iamyri
Дата 26.3.2006, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 18.3.2006
Где: EC

Репутация: нет
Всего: нет



Надо сразу привыкать помещать скрипты в отдельные файлы и закрывать их от роботов.
PM MAIL   Вверх
Vigoroso
Дата 5.8.2006, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 17.6.2006

Репутация: нет
Всего: нет



что за роботы  smile 
PM MAIL   Вверх
Sardar
Дата 5.8.2006, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6984
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 2
Всего: 317



Поисковые боты, что бы скрипты не индексировали, хотя в этом ничего плохого нет, да и сами боты фильтруют всё кроме основного текста.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
skyboy
Дата 29.8.2006, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 3
Всего: 260



при создании таблицы методом DOM если создавать:
table -> tbody -> tr -> td
то всё нормально. А если при создании упустить tbody, то в IE(только в нём) таблица будет 1х1 пиксел размером, а содержимое никак не захочет отобрадаться.
PM MAIL   Вверх
Sardar
Дата 29.8.2006, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6984
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 2
Всего: 317



skyboy, таблицы вообще тяжёлая вещь в браузерах, потому имеют свой API от W3C (смотрим DOM HTML). Строки лучше вставлять через insertRow, ячейки в строках через insertCell.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
skyboy
Дата 29.8.2006, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 3
Всего: 260



Sardar, единообразие - хорошая штука smile а какие ещё проблемы при создании/изменении таблиц известно?
PM MAIL   Вверх
Sardar
Дата 29.8.2006, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6984
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 2
Всего: 317



innerHTML не переносят, не лечиться, согласно стандарту. Также <table>...</table> вставляемый в innerHTML любого блочного элемента убивает таблицу, лечиться оборачиванием в любой блочный элемент, например  <div><table>....</table></div>. Вроде всё smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
cruelangel
Дата 12.9.2007, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 12.9.2007

Репутация: нет
Всего: 8



мда... гость - большой любитель спагетти smile желаю ему поковыряться в своём коде через пару лет...
PM MAIL   Вверх
Се ля ви
Дата 29.5.2008, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2001
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 1
Всего: 126



Цитата(Aliance @  6.6.2005,  22:12 Найти цитируемый пост)
Лучше всего писать полностью, так:
Код
<script type="text/javascript" language="JavaScript">
<!--
/* тут непосредственно сценарий */
// -->
</script>

В XHTML`ной нотации рекомендуется вставлять это в секцию CDATA:
Код
<script type="text/javascript" language="javascript1.2"><![CDATA[

    alert("<This is compatible with XHTML>"); //]]>
</script>


Что бы кое-кто из браузеров не ругался на CDATA`у, можно писать так:
Код
<script type="text/javascript">//<![CDATA[
    
    alert("<This is compatible with XHTML>"); // ]]>
</script>

А вообще я это использую только при разработке, в готовых приложениях взял за правило всё выносить в отдельные файлы скриптов.


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
evilice
Дата 21.1.2010, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 27.11.2008

Репутация: нет
Всего: нет



сокращать код, конечно, надо! Но делайте это с умом и комментируйте!
Так же исользуйте js-библиотеки (prototypeJS, jQuery...) - это упрастит процесс разработки не только Вам, но и другим разработчикам, которым, возможно, придётся разбираться в Вашем коде. + ко всему эти библиотеки прекрасно работают с DOM и AJAX и Вам не придётся изобретать велосипед!
На примере prototypeJS:
document.getElementById("element") можно заменить на $("element")
а document.getElementById("element").value на $("element").value или ещё проще V("element")

По поводу if(temp =! 1)
Старайтесь не сравнивать разные типы данных! (1 - Integer, false - boolean). Можно, ошибочно, подумать, что temp может принимать значения 2, 3, -100...
PM MAIL   Вверх
popov654
Дата 15.8.2011, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 9.1.2009

Репутация: нет
Всего: нет



Цитата(Гость_12345 @  13.12.2005,  17:43 Найти цитируемый пост)
пока не использую парсеры и не планирую использовать их, не собираюсь утруждать себя следованию стандартам


Мда, тяжёлый случай  smile 

PM MAIL   Вверх
Google
  Дата 21.9.2017, 15:30 (ссылка)  





  Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1453 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.