Java




JavaScript: создаем Человека - часть 3


x="|4|4|4|live|Иван Васильевич Грозный|23.02.163535|35|35|Билл ... "

Все, что нам осталось - написать простой код, восстанавливающий таблицу. Например, такой, как показано на .

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

Наша программа в цикле for читает по одному символу переменной x. Если считан обычный символ - присоединяет его к выходной строке o. А если считан разделитель - выводит в выходную строку очередной неизменный кусок. Но как определить, какой кусок "очередной"? Для этого мы ввели переменную n и организовали несколько необычный неявный цикл на операторе switch. В заголовке этого оператора мы поместили выражение n++%7, состоящее из двух операций. Операция % - это деление по модулю, то есть, целочисленный остаток от деления n на 7. Понятно, что если последовательно увеличивать на единицу значение n, начиная от нуля, остаток от его деления на 7 будет колебаться в диапазоне от 0 до 6, принимая последовательно значения 0,1,2,3,4,5,6,0,1,2...

Вот операция ++ и есть постфиксный инкремент. Если перевести эту тарабарщину на русский язык, она значит, что каждый раз значение n увеличивается (или инкрементируется) на единицу, причем постфиксно, то есть "задним числом" - сначала используется "старое" значение переменной, а уж потом она увеличивается. То есть, раз мы присвоили переменной n начальное значение 0, то, считав символ разделителя, с которого начинается строковая переменная x, программа выполнит оператор выбора switch при значении n=0. Результатом обработки выражения n++%7 будет 0 (так как 0/7= 0 и 0 в остатке), и сработает условие case 0, включив в выходную строку o тэги начала строки таблицы вплоть до меняющейся части. Но (обратите на это внимание!) значение n после выполнения n++%7 станет уже равным 1. Значит, встретив разделитель в следующий раз, программа выполнит уже условие case 1 (ведь 1/7 = 0 и 1 в остатке), а еще один разделитель вызовет сработку case 2 и т.д. Вы конечно, уже поняли, откуда в операторе switch(n++%7) взялась именно семерка. Конечно, это число "константных" кусков html-кода, которые нам нужно поочередно выводить.

Последний оператор нашей программы - это старый добрый метод document.write(), выводящий свой аргумент в то место html-документа, где он написан. Как видим, получилась универсальная программа, которую можно применять для упаковки любых регулярных частей страницы, меняя только значение переменной x, а также количество и значения выводимых постоянных блоков.

Как быть, если страницы у вас динамические? Точно так же! Эту программу мы можем так же легко заставить формировать наш движок на php или любом другом серверном языке, вместо того, чтобы забивать ее вручную.




Содержание  Назад  Вперед