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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Первая буква фразы, изменить стиль 
:(
    Опции темы
feosr
Дата 25.12.2007, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



народ, помогите, для менюшки сайта надо изменять цвет первой буквы у ссылки. Например 

Добро пожаловать.

У меня получилось добиться немного в определении первой буквы но оно берет каждое слово.  а мне надо изменить тока в первом слове фразы.

Код

String.prototype.ucfirst = function()
{
   // Split the string into words if string contains multiple words.
   var x = this.split(/\s+/g);
   for(var i = 0; i < x.length; i++)
   {
      // Splits the word into two parts. One part being the first letter,
      // second being the rest of the word.
      var parts = x[i].match(/(\w)(\w*)/);
 
      // Put it back together but uppercase the first letter and lowercase the rest of thw word.
      x[i] = parts[1].toUpperCase() + parts[2].toLowerCase();
   }
 
   // Rejoin the string and return.
   return x.join(' ');
};

var s = "hello my name is ali karbassi.";
 
//hello my name is ali karbassi.
document.write( s );
 
//HELLO MY NAME IS ALI KARBASSI.
document.write( s.toUpperCase() );
 
//hello my name is ali karbassi.
document.write( s.toLowerCase() );
 
//Hello My Name Is Ali Karbassi
document.write( s.ucfirst() );


я по этому примеру делал.

Это сообщение отредактировал(а) feosr - 25.12.2007, 16:00
PM MAIL WWW ICQ   Вверх
Ghirik
Дата 25.12.2007, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



var x = this.split(/\s+/);

Опция 'g' означает глобальный поиск в строке...

Это сообщение отредактировал(а) Ghirik - 25.12.2007, 16:27


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
feosr
Дата 25.12.2007, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



немного непонял. всеравно обрабатываются все слова.
PM MAIL WWW ICQ   Вверх
SelenIT
Дата 25.12.2007, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

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



Вообще-то по стандарту это можно сделать без JS, с помощью CSS-псевдоэлемента :first-letter. Невероятно, но он работает даже в IE (если помнить пару-тройку маленьких хитростей ;).




--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
feosr
Дата 25.12.2007, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



проблема в том что данный псевдоэлемент неприменяется к ссылке. Только к блочным элементам.
PM MAIL WWW ICQ   Вверх
SelenIT
Дата 25.12.2007, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

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



Ссылке можно явно или неявно задать display:block, и она станет блочной. Кроме того, можно указать стиль для li или чем там эта менюшка выложена...

Можно, конечно, и JS-ом - например,
Код

нечто.innerHTML = нечто.innerHTML.replace(/^\s*(\S)/, '<span style=\'color:red\'>$1</span>');



--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
ksnk
Дата 25.12.2007, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Регулярки надо поменять...
Код

String.prototype.ucfirst = function()
{
   // Split the string into words if string contains multiple words.
   var x = this.split(/\.\s*/g);// alert(x);
   for(var i = 0; i < x.length; i++)
   {
     var parts = x[i].match(/\s*([^\s])(.*)$/); 
      alert(parts)
 
      if (parts)
        x[i] = parts[1].toUpperCase() + parts[2].toLowerCase();
   }
 
   // Rejoin the string and return.
   return x.join('. ');
};

var s = "hello my name is ali karbassi.";
 
//hello my name is ali karbassi.
//document.write( s );
 
//HELLO MY NAME IS ALI KARBASSI.
 alert(s.ucfirst());


Это сообщение отредактировал(а) ksnk - 25.12.2007, 18:29


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




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


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

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