teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

6

let

2018/07/07 12:36

投稿

think49
think49

スコア18194

answer CHANGED
@@ -41,7 +41,7 @@
41
41
 
42
42
  df.appendChild(document.createTextNode(LineList[0]));
43
43
 
44
- for (var i = 1, len = LineList.length; i < len; ++i) {
44
+ for (let i = 1, len = LineList.length; i < len; ++i) {
45
45
  df.appendChild(br.cloneNode(false));
46
46
  df.appendChild(document.createTextNode(LineList[i]));
47
47
  }
@@ -59,11 +59,11 @@
59
59
  'use strict';
60
60
  {
61
61
  let text = 'こんにちは世界。こんばんは世界。',
62
- LineList = text.match(/[^。]*。|[^。]+$/g),
62
+ LineList = text.match(/[^。]*。|[^。]+$/g),
63
- jQueryObject = jQuery(document.createTextNode(LineList[0])),
63
+ jQueryObject = jQuery(document.createTextNode(LineList[0])),
64
- br = document.createElement('br');
64
+ br = document.createElement('br');
65
65
 
66
- for (var i = 1, len = LineList.length; i < len; ++i) {
66
+ for (let i = 1, len = LineList.length; i < len; ++i) {
67
67
  jQueryObject = jQueryObject.add(br.cloneNode(false));
68
68
  jQueryObject = jQueryObject.add(document.createTextNode(LineList[i]));
69
69
  }

5

jQueryオブジェクト

2018/07/07 12:35

投稿

think49
think49

スコア18194

answer CHANGED
@@ -27,7 +27,7 @@
27
27
  ### DocumentFragment
28
28
 
29
29
  しかし、`jQuery#text()` に拘る理由が質問文からは読み取れません。
30
- DocumentFragment や ~~jQuery オブジェクト~~を使用して、br要素ノードを含む疑似配列を `jQuery#append()` しても良いと思います。
30
+ DocumentFragment や jQuery オブジェクトを使用して、br要素ノードを含む疑似配列を `jQuery#append()` しても良いと思います。
31
31
 
32
32
  ```HTML
33
33
  <div id="hoge"></div>
@@ -51,6 +51,28 @@
51
51
  </script>
52
52
  ```
53
53
 
54
+ ### jQueryオブジェクト
55
+
56
+ ```HTML
57
+ <div id="hoge"></div>
58
+ <script>
59
+ 'use strict';
60
+ {
61
+ let text = 'こんにちは世界。こんばんは世界。',
62
+ LineList = text.match(/[^。]*。|[^。]+$/g),
63
+ jQueryObject = jQuery(document.createTextNode(LineList[0])),
64
+ br = document.createElement('br');
65
+
66
+ for (var i = 1, len = LineList.length; i < len; ++i) {
67
+ jQueryObject = jQueryObject.add(br.cloneNode(false));
68
+ jQueryObject = jQueryObject.add(document.createTextNode(LineList[i]));
69
+ }
70
+
71
+ jQuery('#hoge').append(jQueryObject);
72
+ }
73
+ </script>
74
+ ```
75
+
54
76
  ### エスケープ
55
77
 
56
78
  > jQueryのエスケープ記法で改行したい

4

サンプルコード追記

2018/07/07 12:29

投稿

think49
think49

スコア18194

answer CHANGED
@@ -5,17 +5,52 @@
5
5
 
6
6
  - [white-space - CSS: カスケーディングスタイルシート | MDN](https://developer.mozilla.org/ja/docs/Web/CSS/white-space)
7
7
 
8
- ```CSS
8
+ ```HTML
9
+ <style>
9
10
  #hoge {
10
11
  white-space: pre-line;
11
12
  }
13
+ </style>
14
+ </head>
15
+ <body>
16
+ <div id="hoge"></div>
17
+ <script>
18
+ 'use strict';
19
+ {
20
+ const text = 'こんにちは世界。こんばんは世界。';
21
+
22
+ jQuery('#hoge').text(text.replace(/。(?!$)/g, '$&\r\n'));
23
+ }
24
+ </script>
12
25
  ```
13
26
 
14
27
  ### DocumentFragment
15
28
 
16
29
  しかし、`jQuery#text()` に拘る理由が質問文からは読み取れません。
17
- DocumentFragment や jQuery オブジェクトを使用して、br要素ノードを含む疑似配列を `jQuery#append()` しても良いと思います。
30
+ DocumentFragment や ~~jQuery オブジェクト~~を使用して、br要素ノードを含む疑似配列を `jQuery#append()` しても良いと思います。
18
31
 
32
+ ```HTML
33
+ <div id="hoge"></div>
34
+ <script>
35
+ 'use strict';
36
+ {
37
+ const text = 'こんにちは世界。こんばんは世界。',
38
+ LineList = text.match(/[^。]*。|[^。]+$/g),
39
+ df = document.createDocumentFragment(),
40
+ br = document.createElement('br');
41
+
42
+ df.appendChild(document.createTextNode(LineList[0]));
43
+
44
+ for (var i = 1, len = LineList.length; i < len; ++i) {
45
+ df.appendChild(br.cloneNode(false));
46
+ df.appendChild(document.createTextNode(LineList[i]));
47
+ }
48
+
49
+ jQuery('#hoge').append(df);
50
+ }
51
+ </script>
52
+ ```
53
+
19
54
  ### エスケープ
20
55
 
21
56
  > jQueryのエスケープ記法で改行したい

3

エスケープ

2018/07/07 12:13

投稿

think49
think49

スコア18194

answer CHANGED
@@ -1,3 +1,5 @@
1
+ ### white-space
2
+
1
3
  > 単純に`html()`だけ使用する場合は`</br>`などのHTMLタグが認識されるので、改行できると
2
4
  > 思うのですが、上記の様なケースで改行をする方法がわかりません。
3
5
 
@@ -9,7 +11,18 @@
9
11
  }
10
12
  ```
11
13
 
14
+ ### DocumentFragment
15
+
12
16
  しかし、`jQuery#text()` に拘る理由が質問文からは読み取れません。
13
17
  DocumentFragment や jQuery オブジェクトを使用して、br要素ノードを含む疑似配列を `jQuery#append()` しても良いと思います。
14
18
 
19
+ ### エスケープ
20
+
21
+ > jQueryのエスケープ記法で改行したい
22
+
23
+ 「エスケープ」というのは特殊な機能を持つメタ文字を無効化することです。
24
+ `jQuery#text()` で挿入されるテキストノードには「**メタ文字が存在しない**」ので、そもそもエスケープ処理がありません。
25
+
26
+ - [二章第三回 基本的な操作とテキストノード — JavaScript初級者から中級者になろう — uhyohyo.net](https://uhyohyo.net/javascript/2_3.html)
27
+
15
28
  Re: syoshinsya さん

2

#hoge

2018/07/07 09:03

投稿

think49
think49

スコア18194

answer CHANGED
@@ -1,10 +1,12 @@
1
- > 単純にhtml()だけ使用する場合は</br>などのHTMLタグが認識されるので、改行できると
1
+ > 単純に`html()`だけ使用する場合は`</br>`などのHTMLタグが認識されるので、改行できると
2
2
  > 思うのですが、上記の様なケースで改行をする方法がわかりません。
3
3
 
4
4
  - [white-space - CSS: カスケーディングスタイルシート | MDN](https://developer.mozilla.org/ja/docs/Web/CSS/white-space)
5
5
 
6
6
  ```CSS
7
+ #hoge {
7
- white-space: pre-line;
8
+ white-space: pre-line;
9
+ }
8
10
  ```
9
11
 
10
12
  しかし、`jQuery#text()` に拘る理由が質問文からは読み取れません。

1

空白バグ解消

2018/07/07 08:48

投稿

think49
think49

スコア18194

answer CHANGED
File without changes