Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Первая буква фразы


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

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

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

Код

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() );


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

Автор: Ghirik 25.12.2007, 16:26
var x = this.split(/\s+/);

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

Автор: feosr 25.12.2007, 16:37
немного непонял. всеравно обрабатываются все слова.

Автор: SelenIT 25.12.2007, 16:50
Вообще-то по стандарту это можно сделать без JS, с помощью CSS-псевдоэлемента http://www.w3schools.com/css/pr_pseudo_first-letter.asp. Невероятно, но он работает даже в IE (если помнить пару-тройку http://habrahabr.ru/blog/css/32786.html ;).


Автор: feosr 25.12.2007, 18:13
проблема в том что данный псевдоэлемент неприменяется к ссылке. Только к блочным элементам.

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

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

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

Автор: ksnk 25.12.2007, 18:28
Регулярки надо поменять...
Код

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());

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)