回答編集履歴

6

let

2018/07/07 12:36

投稿

think49
think49

スコア18166

test CHANGED
@@ -84,7 +84,7 @@
84
84
 
85
85
 
86
86
 
87
- for (var i = 1, len = LineList.length; i < len; ++i) {
87
+ for (let i = 1, len = LineList.length; i < len; ++i) {
88
88
 
89
89
  df.appendChild(br.cloneNode(false));
90
90
 
@@ -120,15 +120,15 @@
120
120
 
121
121
  let text = 'こんにちは世界。こんばんは世界。',
122
122
 
123
- LineList = text.match(/[^。]*。|[^。]+$/g),
123
+ LineList = text.match(/[^。]*。|[^。]+$/g),
124
124
 
125
- jQueryObject = jQuery(document.createTextNode(LineList[0])),
125
+ jQueryObject = jQuery(document.createTextNode(LineList[0])),
126
126
 
127
- br = document.createElement('br');
127
+ br = document.createElement('br');
128
128
 
129
129
 
130
130
 
131
- for (var i = 1, len = LineList.length; i < len; ++i) {
131
+ for (let i = 1, len = LineList.length; i < len; ++i) {
132
132
 
133
133
  jQueryObject = jQueryObject.add(br.cloneNode(false));
134
134
 

5

jQueryオブジェクト

2018/07/07 12:35

投稿

think49
think49

スコア18166

test CHANGED
@@ -56,7 +56,7 @@
56
56
 
57
57
  しかし、`jQuery#text()` に拘る理由が質問文からは読み取れません。
58
58
 
59
- DocumentFragment や ~~jQuery オブジェクト~~を使用して、br要素ノードを含む疑似配列を `jQuery#append()` しても良いと思います。
59
+ DocumentFragment や jQuery オブジェクトを使用して、br要素ノードを含む疑似配列を `jQuery#append()` しても良いと思います。
60
60
 
61
61
 
62
62
 
@@ -104,6 +104,50 @@
104
104
 
105
105
 
106
106
 
107
+ ### jQueryオブジェクト
108
+
109
+
110
+
111
+ ```HTML
112
+
113
+ <div id="hoge"></div>
114
+
115
+ <script>
116
+
117
+ 'use strict';
118
+
119
+ {
120
+
121
+ let text = 'こんにちは世界。こんばんは世界。',
122
+
123
+ LineList = text.match(/[^。]*。|[^。]+$/g),
124
+
125
+ jQueryObject = jQuery(document.createTextNode(LineList[0])),
126
+
127
+ br = document.createElement('br');
128
+
129
+
130
+
131
+ for (var i = 1, len = LineList.length; i < len; ++i) {
132
+
133
+ jQueryObject = jQueryObject.add(br.cloneNode(false));
134
+
135
+ jQueryObject = jQueryObject.add(document.createTextNode(LineList[i]));
136
+
137
+ }
138
+
139
+
140
+
141
+ jQuery('#hoge').append(jQueryObject);
142
+
143
+ }
144
+
145
+ </script>
146
+
147
+ ```
148
+
149
+
150
+
107
151
  ### エスケープ
108
152
 
109
153
 

4

サンプルコード追記

2018/07/07 12:29

投稿

think49
think49

スコア18166

test CHANGED
@@ -12,13 +12,39 @@
12
12
 
13
13
 
14
14
 
15
- ```CSS
15
+ ```HTML
16
+
17
+ <style>
16
18
 
17
19
  #hoge {
18
20
 
19
21
  white-space: pre-line;
20
22
 
21
23
  }
24
+
25
+ </style>
26
+
27
+ </head>
28
+
29
+ <body>
30
+
31
+ <div id="hoge"></div>
32
+
33
+ <script>
34
+
35
+ 'use strict';
36
+
37
+ {
38
+
39
+ const text = 'こんにちは世界。こんばんは世界。';
40
+
41
+
42
+
43
+ jQuery('#hoge').text(text.replace(/。(?!$)/g, '$&\r\n'));
44
+
45
+ }
46
+
47
+ </script>
22
48
 
23
49
  ```
24
50
 
@@ -30,7 +56,51 @@
30
56
 
31
57
  しかし、`jQuery#text()` に拘る理由が質問文からは読み取れません。
32
58
 
33
- DocumentFragment や jQuery オブジェクトを使用して、br要素ノードを含む疑似配列を `jQuery#append()` しても良いと思います。
59
+ DocumentFragment や ~~jQuery オブジェクト~~を使用して、br要素ノードを含む疑似配列を `jQuery#append()` しても良いと思います。
60
+
61
+
62
+
63
+ ```HTML
64
+
65
+ <div id="hoge"></div>
66
+
67
+ <script>
68
+
69
+ 'use strict';
70
+
71
+ {
72
+
73
+ const text = 'こんにちは世界。こんばんは世界。',
74
+
75
+ LineList = text.match(/[^。]*。|[^。]+$/g),
76
+
77
+ df = document.createDocumentFragment(),
78
+
79
+ br = document.createElement('br');
80
+
81
+
82
+
83
+ df.appendChild(document.createTextNode(LineList[0]));
84
+
85
+
86
+
87
+ for (var i = 1, len = LineList.length; i < len; ++i) {
88
+
89
+ df.appendChild(br.cloneNode(false));
90
+
91
+ df.appendChild(document.createTextNode(LineList[i]));
92
+
93
+ }
94
+
95
+
96
+
97
+ jQuery('#hoge').append(df);
98
+
99
+ }
100
+
101
+ </script>
102
+
103
+ ```
34
104
 
35
105
 
36
106
 

3

エスケープ

2018/07/07 12:13

投稿

think49
think49

スコア18166

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

2

#hoge

2018/07/07 09:03

投稿

think49
think49

スコア18166

test CHANGED
@@ -1,4 +1,4 @@
1
- > 単純にhtml()だけ使用する場合は</br>などのHTMLタグが認識されるので、改行できると
1
+ > 単純に`html()`だけ使用する場合は`</br>`などのHTMLタグが認識されるので、改行できると
2
2
 
3
3
  > 思うのですが、上記の様なケースで改行をする方法がわかりません。
4
4
 
@@ -10,7 +10,11 @@
10
10
 
11
11
  ```CSS
12
12
 
13
+ #hoge {
14
+
13
- white-space: pre-line;
15
+ white-space: pre-line;
16
+
17
+ }
14
18
 
15
19
  ```
16
20
 

1

空白バグ解消

2018/07/07 08:48

投稿

think49
think49

スコア18166

test CHANGED
File without changes