27.03.2012, 17:41
|
|
Аспирант
|
|
Регистрация: 23.02.2012
Сообщений: 68
|
|
а как вывести текст вертикально?
|
|
27.03.2012, 18:18
|
|
Аспирант
|
|
Регистрация: 23.02.2012
Сообщений: 68
|
|
вертикальный текст
да нет нагерное
вот как на рисунке ВЕРТИКАЛЬНО
Безымянный.jpg
Последний раз редактировалось مراد, 27.03.2012 в 21:14.
Причина: забыл добавить рис.
|
|
27.03.2012, 19:29
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Ирония, Maxmaxmахimus, это, конечно, хорошо (хочешь, чтобы регулярные выражения представлялись не литерально, создай среду, в которой они будут представляться, например, схематически).
Но к чему лирика, если сам заварил эту кашу, приведя пример, по которому возникают вопросы.
Для эффективного применения предложенного тобой варианта решения, на мой взгляд, осталось разобраться с тем как досрочно выйти из функции forEach и с тем какие существуют варианты для возвращения значений из внутренней функции для этой forEach (вдобавок к предложенному мной), если знаешь, просвети.
|
|
27.03.2012, 21:25
|
|
Аспирант
|
|
Регистрация: 23.02.2012
Сообщений: 68
|
|
ааа... что там на счет вертикального текста
|
|
27.03.2012, 21:44
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Maxmaxmахimus, давай решать задачи по порядку:
сначала доразберёмся с твоим примером,
потом, если владеешь информацией, можешь помочь мне в вопросе Размеры фреймов и JavaScript,
ну а потом можно будет поговорить, как я понял, о твоей любимой теме - регулярных выражениях (средство не спорю мощное).
|
|
27.03.2012, 22:36
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от bes
|
Кроме того, следует понимать, что данный код не кроссбраузерный, так как функция forEach работает не во всех браузерах, в качестве альтернативы (со своими демонами) можно для обхода всех элементов массива использовать цикл for (например, вида for (var key in arr) {var val = arr[key]} ).
|
Обычно массив обходят по переменной, хранящей ссылку на число, с каждой итерацией которую проверяют, не больше ли она длины массива.
Ваш способ применяется в большинстве случаев для обхода объектов.
Сообщение от bes
|
Для эффективного применения предложенного тобой варианта решения, на мой взгляд, осталось разобраться с тем как досрочно выйти из функции forEach и с тем какие существуют варианты для возвращения значений из внутренней функции для этой forEach (вдобавок к предложенному мной), если знаешь, просвети.
|
forEach не предполагает ни возвращение значения, ни его прерывания. Метод предполагает "обойти массив, применив к каждому элементы оного функцию callback"
Последний раз редактировалось melky, 27.03.2012 в 22:40.
|
|
27.03.2012, 22:49
|
|
Аспирант
|
|
Регистрация: 23.02.2012
Сообщений: 68
|
|
Сообщение от مراد
|
ааа... что там на счет вертикального текста
|
люди!!!
можно ли переменной присвоить таблицу
|
|
27.03.2012, 23:04
|
Server
|
|
Регистрация: 26.09.2011
Сообщений: 252
|
|
Сообщение от مراد
|
можно ли переменной присвоить таблицу
|
переменной можно присвоить ссылку на таблицу
|
|
27.03.2012, 23:51
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Спасибо, melky, за то, что подключился к нашей беседе.
Да, такой способ наверное наиболее подходит для данной ситуации (хотя и пробежаться по объектам-массивам можно), в цикл for и break можно вставить.
Не поленюсь, приведу, код подобного forEach работающего цикла для массива schedule (расчёт времени наверное логично вынести за пределы цикла).
Код:
|
for (i = 0; i < schedule.length; i++)
{
var arrTimes = schedule[i][0].match( /\d+/g );
if (hours >= arrTimes[0] &&
hours <= arrTimes[2] &&
minutes >= arrTimes[1] &&
minutes < arrTimes[3])
{alert(schedule[i][1]); break}
} |
Что касается, функции forEach, если из неё точно не предусмотрен досрочный выход, то это печально (думается, что forEach, как раз и реализована таким циклом).
А результат работы внутренней функции в forEach можно вернуть через внешнюю переменную (я подумал может быть есть ещё какие-нибудь варианты).
|
|
28.03.2012, 16:19
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,124
|
|
مراد,
Вариант...
var schedule = [
[900, 'Пары еще не начались '],
[945, 'Первый час, первой пары '],
[950, 'Перемена 5 минут '],
[1035, 'Второй час, первой пары '],
[1045, 'Конец первой пары. Перемена на 10 минут '],
[1130, 'Первый час, второй пары '],
[1135, 'Перемена 5 минут '],
[1220, 'Второй час, второй пары '],
[1240, 'Большая перемена '],
[1325, 'Первый час, третьей пары '],
[1330, 'Перемена 5 минут '],
[1415, 'Второй час, третьей пары '],
[2359, 'Наконец то закончились эти пары ']
];
alert( testSchedule() );
function testSchedule() {
var nowTime = new Date(), hours = nowTime.getHours(), minutes = nowTime.getMinutes();
var def = '';
for (var i=0; i<schedule.length; i++) {
def = schedule[i][1];
if((hours*100)+minutes < schedule[i][0]) break;
}
return def;
}
|
|
|
|