4

かなり単純な質問ですが、答えを見つけることができないようです。

さまざまなソースからの HTML ページがいくつかありますが、それらの<h2>要素には大文字の文字列が含まれています。そのような:

<h2>Are there OTHER USES for this medicine?</h2>

私はこれらの通常の文をケースにしようとしています。つまり、

<h2>Are there other uses for this medicine?</h2>

CSS ですべて小文字にすることから始めました。

h2 {
  text-transform: lowercase;
}

最初の文字を大文字にするだけの関数を作成して、jQuery でそれらを操作したいと思っていたからです。

問題はh2、ページ上の各要素の最初の文字だけを大文字にする jQuery 関数をどのように作成すればよいかということです。

このスレッドを読んだ後、これを試しました:

function capitaliseFirstLetter(string){
  return string.charAt(0).toUpperCase() + string.slice(1);
}

$('h2').each(function(){
  capitaliseFirstLetter($(this).text());
});

しかし、それは機能せず、コンソールにエラーも表示されなかったので、何が問題なのかわかりません。

編集

私はこの質問で 1 つの大きな見落としをしました。使用する

text-transform: lowercase

I を小文字にしたので、

<h2>What should I do in case of OVERDOSE?</h2>

なりました

<h2>What should i do in case of overdose?</h2>

@ marcelo-biffaraのソリューションを使用したとき。(または:first-letterCSS 構文。)

さて、複雑な正規表現を使用して、文字列 " i " を大文字にする必要がありますか?

編集2

「 i 」が 2 回出現する場合 (「服用量が多すぎる場合はどうすればよいですか?」など)、それらを「 I 」に置き換えるループが必要ですか?

4

5 に答える 5

3

あなたはこの機能を作ることができます

function capitalizeMe(val){
    return val.charAt(0).toUpperCase()+val.substr(1).toLowerCase();
}

ああ、おそらくあなたはcss h2ルールを削除する必要があります

このようにh2に適用できます

$('h2').each(function(){
    var str = capitalizeMe($(this).html());
    $(this).html(str);  
});


function replaceAll( text, v1, v2 ){
  while (text.toString().indexOf(v1) != -1)
      text = text.toString().replace(v1,v2);
  return text;
}

「i」の各インスタンスを大文字にしたい場合は、次のようにすることができます

$('h2').each(function(){
    var str = replaceAll(capitalizeMe($(this).html())," i "," I ");
    $(this).html(str);  
});
于 2012-12-06T19:34:25.867 に答える
3

capitaliseFirstLetter($(this).text());文字列を返します。それでおしまい。あなたはその文字列で何もしていません。返された文字列をどこかに置く必要があります。

$('h2').each(function(){
    var str = capitaliseFirstLetter($(this).text());
    $(this).text(str);  // Set the text of the element
});
于 2012-12-06T19:21:22.500 に答える
2

CSSしか使えないのか

h2 {
    text-transform: lowercase;
}
h2:first-letter {
    text-transform: capitalize;
}

http://jsfiddle.net/mowglisanu/CbDHH/

于 2012-12-06T19:27:06.817 に答える
1

h2 コンテンツの新しい値を保存する必要があります。

$('h2').each(function(){
  $(this).text(capitaliseFirstLetter($(this).text()));
});
于 2012-12-06T19:21:13.610 に答える