Jump to content

rgl

User
  • Posts

    109
  • Joined

  • Last visited

Everything posted by rgl

  1. <html> <head> </head> <body> <script type='text/javascript'> var a = new Array(); // пустой массив a[7] = 7; a[77.7] = 77.7; // т.к. индекс не челый, длина осталась 8 a.abcd = "xyz"; // равносильно a[abcd] = "xyz" alert(a.length); alert(a["abcd"]); // ни чем не отличается от alert(a.abcd); </script> </body> </html>
  2. В JavaScript есть ассоциативные массивы. Объекты - это как раз и есть ассоциативные массивы, и доступ к элементам объекта возможен как через точку, так и через квадратные скобки. Массив - это разновидность объекта, а значит все тот же ассоциативный массив. Предполагается, что элементы массива имеют не имена а номера (целые числа), и в связи с этим предположением есть рад дополнительных возможностей - создавать массив, не указывая имена объектов, а просто перечисляя значения, свойство Length, (которое, кстати, возвращает не количество элементов в массиве, а всего лишь номер поля с самым большим (целочисленным) номером плюс один.
  3. а - это переменная, она может принимать разные значения, значения разных типов. Во время выполнения скрипта переменной может быть присвоено значение сначала числовое, а потом ссылка на функцию. Это так же, как переменной можно сначала присвоить число, а потом строку. При каждом присваивании старое значение, разумеется, теряется. Когда мы присвоили переменной а значение типа функция, с этого момента ее можно использовать как функцию, и до того, как мы присвоим ей какое нибудь другое значение. Это все относиться к записям вида a = function(x,y){...} и a = new function( "x", "y", "..." ); НО не относится к определению функции таким образом function a(x,y){...} В этом случае функция видна везде, даже до того, как была определена (рекомендую проверить), а еще в этом случае имя а использовать ни для чего другого нельзя. И если где-то как-то работает - это не доказательство что можно, т.к. еще где-то работает как-то по-другому. :-) http://yura.thinkweb2.com/named-function-expressions/
  4. если писать new Array( параметры ), то значение слегка модифицируется в зависимости от количества параметров. 1) ели параметров нет, т.е. написать new Array(); то будет создан пустой массив. 2) если параметр один (должно быть целое положительное число), то будет создан массив, длина которого равна параметру, т.е. new Array(7); создаст массив длиной семь. 3) если параметров два или больше, то будет создан массив, длина которого равна количеству параметров, напр, new Array(7,8); создаст массив длиной два. В приведенном примере: Вот это brakeParts = new Array('',part1,part2,part3); непонятно зачем создается массив длиной 4, а затем делается цикл от единицы, когда можно было создать массив длиной три и цикл от нуля, т.е. вместо for(x = 1; x<=3; x++){ document.write('<tr><td>',x,'</td>'); заменить на: for(x = 0; x<3; x++){ document.write('<tr><td>',x+1,'</td>');
  5. Если функция определена так: function a(x,y) {.....} то нельзя, но так a = function(x,y){...} можно, но не могу придумать зачем это может понадобиться
  6. Я бы не рекомендовал так писать. Можно написать: function с(a, b){ ... а можно и так: c = function(a, b){ ... (без а) Кому-то может показаться удивительным, но можно написать и так: a = function(a, b){ ... в этом случае переменная а перестает быть семеркой и начитает быть функцией (после выполнения этой строчки кода). Никто не запрещает потом опять переменной а присвоить число. Но вот писать так function a(a, b){ ... нельзя, в этом случае а больше ни для чего использовать нельзя (в той же области видимости). Еще одно отличие, если определить функцию так, то она существует с самого начала, а если через a=function... то только после выполнения этой строчки кода Да, и еще, не стоит давать одинаковое имя и самой функции, и одному из ее параметров.
  7. нехорошо давать одно и то же имя (в конкретном примере а) и переменной и функции
  8. Действительно, написан какой-то набор слов, и догадаться что автор имел ввиду можно только если это заранее знать. :-) Что же так удивило автора первого сообщения? Считается, что язык JavaScript сделан по образу и подобию C и C++, однако есть целый ряд отличий, и (с точки зрения того, кто привык к С) странностей. 1. Не существует областей видимости как в С, переменная или глобальная (вне функции) или локальная (внутри функции). Даже если переменная описана внутри "блока", т.е. в фигурных скобках, видна она и за пределами этого блока. Также не важно, описана ли переменная до использования или после. 2. Если переменная описана неявно, появляется в левой части присваивания, но без слова var, она считается глобальной, даже если появляется только внутри функции. Автора скорее всего удивило вот что: он определил глобальную переменную res и присвоил ей значение 252. Внутри функции он присвоил переменной res некоторое значение. Поскольку он ДО ЭТОГО внутри функции переменную res не определял, по его мнению должно присвоиться новое значение одноименной глобальной переменной. На самом же деле поскольку ГДЕ-ТО ВНУТРИ ФУНКЦИИ переменная res явно определена, значение присвоилось локальной переменной, и не важно где именно она определена - после присваивания, внутри блока, внутри кода в условном операторе, который (код) никогда не исполняется. Важно, что переменная явно определена внутри функции.
  9. http://bowline.palmoid.com/test.htm
  10. Другой вариант: a²
  11. Есть книга значительно короче и доступнее, Вирт, Алгоритмы и структуры данных. http://www.ozon.ru/context/detail/id/128290/ Форумы интересно бывает попросматривать: http://rsdn.ru/Forum/MsgList.aspx?group=alg http://rsdn.ru/Forum/MsgList.aspx?group=etude
  12. А если убрать class="progect" то работает?
  13. for(var j = els.rows.length-1; j >= 0; j-- )
  14. А почему бы не разместить и внутри дива хтмл-ный код для показа какой-нибудь, пусть не случайной картинки, чтобы и если у кого-то скрипт отключен, все равно какая-то картинка показывалась. Можно внутри тэга noscript И еще вопрос, есть ли какие-то недостати у другого способа - в нужном месте кода написать document.write( тег img со случайной картинкой ) ?
  15. Не угодили тем, что я о них ничего не знал, и поиск не помог. Спасибо, теперь буду знать. Попробовал, но не сумел заставить работать в IE6
  16. Хотелось зафиксировать верх страницы (конкретно в моем случае названия колонок таблицы) от прокрутки. Пытался нагуглить решение, но понравившегося мне не нашел - у всех найденных решений область прокрутки имела фиксированный размер, и если размер окна был больше чем "надо", лишнее место пропадало зря, но хуже, если высота экрана оказывалась меньше. Тогда появлялась вторая полоса прокрутки, которая все-таки уводила названия колонок за пределы экрана. Ничего лучше найти не смог. Тогда решил сделать с помощью фреймов. Все банально просто - в верхнем фрейме табличка с заголовками колонок, в нижнем - таблица с собственно данными. Хочу обратить внимание на два момента. 1. Ширина ячеек с названиями колонок (в верхнем фрейме) вовсе не обязательно должна совпадать с шириной соответствующих колонок в нижней таблице. 2. Появление прокрутки в верхнем фрейме крайне нежелательно, поэтому высота верхнего фрейма должна быть достаточной. Но у каждого браузера свое представление о том, что такое "достаточно". Поэтому надо делать с запасом. Но тогда расстояние между названиями колонок и данными станет большим. Что делать? Я сделал так - поместил верхнюю табличку (с названиями колонок) в еще одну таблицу, растянул внешнюю таблицу на всю высоту фрейми с помощью нестандартного атрибута height, а внутреннюю табличку (с названиями колонок) прижал книзу атрибутом valign=bottom для клеточки внешней таблицы. Вот и все, критикуйте :-) http://inna-sun.ru/pr_holm.htm (В рабочем варианте табличка открывается в окошке "правильной" ширины) З.Ы. хотел написать в "полезные приемы и решения" но туда меня не пустили.
  17. Всем спасибо за ответы. Так как "совсем правильного" решения никто подсказать не смог, делаю вывод что такого и нет. То, что находятся люди, которые, не будучи в состоянии сказать что-либо по существу, начинают говорить общие поучительные слова о "правильности", "порядке" и т.д., причем в недопустимых тонах, для меня не новость. В данном конкретном случае крайне желательно, чтобы среди собственно данных было минимальное количество другой информации, будем считать что это навязанное мне условие, именно поэтому отсутствуют закрывающие td и tr, именно поэтому и не хочу писать align в каждом теге td, именно поэтому и появился у меня вопрос. На отсутствие закрывающих тегов td и tr не ругается валидатор, вот, посмотрите: http://validator.w3.org/check?uri=http://i...Validator/1.767 Кстати, кто-нибудь может объяснить, почему валидатор ругается на закрывающих тег head? И еще вопрос - что делать, если валидатор ругается на что-то внутри кода счетчика, который я исправлять не могу?
  18. Во-первых, нужно задать выравнивание для каких-то колонок по центру, а для каких-то по правому краю. Ну а во-вторых, похоже что выравнивание, заданное в теге col работает не во всех браузерах. Странно, ширина задается правильно вроде во всех, а выравнивание - нет. Если ничего другого не найдется, то так и сделаю. Все-же хочется чтобы выравнивалось правильно даже если скрипт отключен.
  19. Есть таблица, нужно задать в некоторых колонках выравнивание по центру, а в других - по правому краю. При этом ОЧЕНЬ нежелательно писать что-либо в каждом теге td, хоть align хоть класс. Пробовал сделать с помощью тегов col, но не работает в firefox и в хроме. Также пробовал с помощью стилей, задавать для td, td+td, td+td+td, но тоже работает не во всех браузерах. Подскажите что нужно сделать чтобы работало везде? Еще раз, хочется задать выравнивание один раз на все ячейки колонки, а не в каждой ячейке отдельно. Вот пример что смог сделать, но не работает в хроме и firefox http://inna-sun.ru/pr_holm.htm
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy