🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

3回答

1312閲覧

jQueryで書き出されたHTMLに改行を機能させたい

krswakt

総合スコア12

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2019/12/18 15:50

編集2019/12/19 06:58

jquery break/animate warping text paragraph example <参照元

こちらを参考に同様のアニメーションが機能したページを作りたいのですが、

<p id="weirdtext">テスト<br>文章</p>このように、あるいは\nなどで 文章に改行を効かせる事は可能なのでしょうか? jsに関する知識がまだ至らず、打ち間違いなどがないようコードはほぼそのままで使っております。

Javascript

1$(document).ready(function(){ 2 setup(); 3}); 4 5function setup(){ 6 var $passage = $('#weirdtext'); 7 //get the inner HTML of the #weirdtext paragraph 8 var rawtxt = $passage.html(); 9 10 //Get the length of the string for use in loop 11 var len = rawtxt.length; 12 13 //empty string used to store final text that includes spans 14 var newtext = ''; 15 16 //For each character inside #weirdtext string (this is why we got length) 17 for(var i = 0; i < len; i ++){ 18 19 //get a random num between 1 and 5 20 var rng = Math.floor(Math.random() * 5) + 1; 21 22 //get the i-th character from the string 23 var currentchar = rawtxt.charAt(i); 24 if(currentchar == ' '){ 25 //if it's a space, add an empty .space span 26 var newchar = '<span class="space"></span>'; 27 } 28 else{ 29 //otherwise, wrap it with a span, and give it class effectN, where N is a random int as before 30 var newchar = '<span class="effect' + rng + '">' + currentchar + '</span>'; 31 } 32 //add this new "char" (actually it's a char with spans wrapping it) to the empty string 33 newtext = newtext + newchar; 34 } 35 36 //最終行② replace #weirdtext paragraphs inner HTML with the newly created string 37 $passage.html(newtext); 38 39//個人で追加してみたもの① 40var str = $passage.html(newtext).val(); 41$('#weirdtext').html(str.replace(/\r?\n/g, '<br>')); 42 43}

最終的に$passage.htmlというものに書き出されているから<br>や\nが反応せず、そのまま文字列として出てしまっているのかと思い、改行を置換するというものを調べてやってはみたのですが、
入れるところが悪いのか、理解が至っていないからか、無効でした。

現状

最初の一文の下に追加することで<br>を改行として認識してくれました。
正しこの場合は適用したかったフォントが伸び縮みするという効果を打ち消してしまうようでした。
一度自己解決したと記事を上げさせて頂いたのですが、
コメントしてくださった方法含め、「効果を持続したまま改行を適用する」には
まだ至っていない為、もう少し考えてみようと思います。

var $passage = $('#weirdtext'); //追加したもの $( '#weirdtext' ).html( $('<p>').text( text ).html().replace( '。', '。<br>' ) );

こうしたらいいというものが他ありましたら是非教えて頂ければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2019/12/18 16:21

ご自身で試されたコードを質問文に追記し、「何」が「どのように」わからないのか、コードのどの部分で詰まっているのかなどを具体的に追記されたほうが回答が望めると思います。
krswakt

2019/12/19 01:56

コメントありがとうございます。参照元にあるものをそのまま使っている為、 理解に至っていないものを記載することは余計なお手間を増やしてしまうのではと考えておりました。 後、追記させて頂きます。
guest

回答3

0

ベストアンサー

js

1$passage.html(newtext.replace( /</span>/g, '。</span><br>' ));

投稿2019/12/19 17:00

kei344

総合スコア69596

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

krswakt

2019/12/19 17:54

コメント有難うございます。こちらは最終行を書き換えるという認識で間違いなかったでしょうか? 個人で追加したものは覗き、最終行の $passage.html(newtext);を書いて頂いたものに書き換えてみました。 <p>タグ内での改行に変化はありませんでした…。 .replaceで改行を認識させる方法ではいくつか上手くいくのですが、どうやら newtext部分に変更が加えられるとアニメーションが動作しなくなるようです。 kei344様のテスト環境では、頂いた内容の上でアニメーションが機能したという事でしょうか? であれば自分の環境の問題も考えねばと思案しております…。
krswakt

2019/12/20 00:19

わかりやすいよう貼り出してくださってありがとうございます…!! 修正している最中に大事な部分を消していた事が反映されない原因でした。 最初の指摘から解決まで、本当にありがとうございます…!! だからこうなるのか…と勉強になりました。評価が1しかつけられず残念です。 求めていたものに対する最適解だった為、こちらをベストアンサーとさせて頂きます…!
krswakt

2019/12/20 00:34 編集

こちらの回答によって途中の<span>などがどう動いているかも理解が至りました…! 応用が出来るようになり助かっております。重ねてありがとうございます!
guest

0

以下でよいのでは。

javascript

1var str = newtext.replace(/\r?\n/g, '<br>'); 2$passage.html(str);

ただし、newtextの中に、¥rないし、¥nが入ってることが前提です。

投稿2019/12/19 02:28

miyabi_takatsuk

総合スコア9555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

krswakt

2019/12/19 02:40

回答有難うございます。ちなみにこちらはどこに入れるのが正しかったのでしょうか…? 個人的に入れた個所①を差し替え、または最後の一文②と入れ替えてみたのですが、 うまく動作しませんでした。理解が足りず申し訳ありません。
miyabi_takatsuk

2019/12/19 02:51

> ただし、newtextの中に、¥rないし、¥nが入ってることが前提です。 ってことです。 自己解決のように、¥rないし、¥nが入ってなければ、当然動作しませんよ。
krswakt

2019/12/19 03:03

言葉が足りず申し訳ありません。 <p>内の文章に、¥rと¥nは入れて試してみたのですが うまく動作しませんでした。ご助力有難うございます。
miyabi_takatsuk

2019/12/19 03:17 編集

まんま¥r、¥nを入れてもダメですよ。 (HTML上では、&yen;rとかとして認識されてしまう) これは、不可視文字、の中でも、改行コードと言って、 テキストでまんま打ってもだめなものです。 コード上の本当の"改行コード"である必要があります。 (キーボードでEnter or returnキーを打った時に入るモノホンの文字コードということ) このコメントでも、改行をしたら、改行自体は見えないのに、改行が入るでしょう? これは、不可視の¥rないし¥nが入っているからです。 (textarea要素は、改行コードが改行として反映される仕様になってます) それを、投稿後は、改行コードを、<br>に変換してるんです。 ちなみにタブもありまして、¥tがそれです。 JavaScript(ソースコード)上は、これら不可視文字を取得することができるんです。
krswakt

2019/12/19 03:35

なるほど…!そういうことだったのですね。 丁寧にありがとうございます!!勉強になりました…!
guest

0

最初の一文の下に追加することで<br>を改行として認識してくれました…!
回答いただいている方に更に質問をしてはおりますが、解決したとして投稿させて頂きます…!

var $passage = $('#weirdtext'); //追加したもの $( '#weirdtext' ).html( $('<p>').text( text ).html().replace( '。', '。<br>' ) );

投稿2019/12/19 02:43

krswakt

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

krswakt

2019/12/19 02:50

<p id="weirdtext"> テスト<br>文章 改行コードをいれない改行 テスト文章。 </p> このように打った際、以下のように出るようになりました。 テスト 文章 改行コードをいれない改行 テスト文章。
krswakt

2019/12/19 06:25

更新が正しく反映されていなかったので補足追加です。 自己解決した…と思っておりましたが、改行が効く代わりに 文字の伸び縮みする作用が消えてしまっておりました。 何度も訂正して申し訳ありません。もう少し悩んでみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問