回答編集履歴

5

間違いを修正

2016/07/02 09:38

投稿

shi_ue
shi_ue

スコア4437

test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  txt += "</tbody></table>ここまで</p>";
24
24
 
25
- document.getElementById("mainBody").innerHtml = txt;
25
+ document.getElementById("mainBody").innerHTML = txt;
26
26
 
27
27
  ```
28
28
 
@@ -36,7 +36,7 @@
36
36
 
37
37
  ele.id = "addScript001";
38
38
 
39
- ele.innerText = 読み込んだtext;
39
+ ele.innerHTML = 読み込んだtext;
40
40
 
41
41
  if (document.getElementById(ele.id)) {
42
42
 
@@ -48,10 +48,8 @@
48
48
 
49
49
  ```ってやります。
50
50
 
51
- 「読み込んだtext」はHTMLに埋め込むにしろ、ajaxで返すにしろ、サーバー側でそのtextを生成させる仕組みが必要です。
51
+ 「読み込んだtext」は質問にあるようにXMLHttpRequestでやればいいで
52
52
 
53
53
 
54
54
 
55
- ていか、ここまやるなら、サーバー側でテキストを作っ、直接mainBodyinnerHtmlに入れたらですよ。
55
+ もう少し整理し「何を」「どうして」外部に持ちたか、考えた方がよさそうす。決し省力化はなりそうもなですが・・・
56
-
57
- あー、あほらしいこと考えちゃった・・・

4

間違い

2016/07/02 09:38

投稿

shi_ue
shi_ue

スコア4437

test CHANGED
@@ -1,18 +1,28 @@
1
+ すみません、嘘を書いておりました。
2
+
3
+ mainBodyの中にscriptブロックを置いても、動作はbodyに対してなされてしまいます。
4
+
5
+
6
+
7
+
8
+
1
9
  読み込むtextをjavascriptにします。
2
10
 
3
11
  ```Javascript
4
12
 
5
- document.write("<p>メンバーの一覧<br>");
6
-
7
- document.write("<table><tbody>");
13
+ var txt = "<p>メンバーの一覧<br><table><tbody>";
8
14
 
9
15
  for( i=1; i < memData.length-1; i++ ){
10
16
 
11
- dumpMem( i );
17
+ txt += dumpMem( i );
18
+
19
+ // dumpMemは出力するのではなくhtmlをreturnするようにする
12
20
 
13
21
  }
14
22
 
15
- document.write("</tbody></table>ここまで</p>");
23
+ txt += "</tbody></table>ここまで</p>";
24
+
25
+ document.getElementById("mainBody").innerHtml = txt;
16
26
 
17
27
  ```
18
28
 
@@ -24,14 +34,24 @@
24
34
 
25
35
  var ele = document.createElement('script');
26
36
 
37
+ ele.id = "addScript001";
38
+
27
39
  ele.innerText = 読み込んだtext;
28
40
 
29
- document.getElementById("mainBody").appendChild(ele);
41
+ if (document.getElementById(ele.id)) {
30
42
 
31
- ```ってやると実現できそう。
43
+ document.getElementById(ele.id).remove();
32
44
 
45
+ }
46
+
47
+ document.body.appendChild(ele);
48
+
49
+ ```ってやります。
50
+
33
- ぜったいhtmlじゃなきゃヤダ、っていう場合は読み込んだtextからdomツリーをスクリプトを書いて、頑張るしかなさそうです
51
+ 読み込んだtext」はHTMLに埋め込むにしろ、ajaxで返すにしろ、サバー側でそのtext生成させ仕組みが必要です。
34
52
 
35
53
 
36
54
 
37
- 注意すべき点とし、appendChildなので、何回でも実行できてしまうので、どんどん増えていってしまいます。内容がってる場合は実行できなようにする必要がありそうです。
55
+ いうかここまでやるなら、サーバー側でテキストを作って、直接mainBodyにinnerHtmlれたらいいです
56
+
57
+ あー、あほらしいこと考えちゃった・・・

3

追記

2016/07/02 08:59

投稿

shi_ue
shi_ue

スコア4437

test CHANGED
@@ -31,3 +31,7 @@
31
31
  ```ってやると実現できそう。
32
32
 
33
33
  ぜったいhtmlじゃなきゃヤダ、っていう場合は読み込んだtextからdomツリーを作るスクリプトを書いて、頑張るしかなさそうですね。
34
+
35
+
36
+
37
+ 注意すべき点としては、appendChildなので、何回でも実行できてしまうので、どんどん増えていってしまいます。内容が入っている場合は実行できないようにする必要がありそうです。

2

変更

2016/07/02 05:38

投稿

shi_ue
shi_ue

スコア4437

test CHANGED
@@ -1,11 +1,33 @@
1
+ 読み込むtextをjavascriptにします。
2
+
3
+ ```Javascript
4
+
5
+ document.write("<p>メンバーの一覧<br>");
6
+
7
+ document.write("<table><tbody>");
8
+
1
- `eval`を使えばいいかもしれませんが、文法がめちゃくちゃ・・・
9
+ for( i=1; i < memData.length-1; i++ ){
10
+
11
+ dumpMem( i );
12
+
13
+ }
14
+
15
+ document.write("</tbody></table>ここまで</p>");
16
+
17
+ ```
2
18
 
3
19
 
4
20
 
5
- 追記
21
+ 読み込みもとでは、
6
22
 
7
- ---
23
+ ```Javascript
8
24
 
9
- まあ、呼び出し元がアレなのはともかく。
25
+ var ele = document.createElement('script');
10
26
 
27
+ ele.innerText = 読み込んだtext;
28
+
29
+ document.getElementById("mainBody").appendChild(ele);
30
+
31
+ ```ってやると実現できそう。
32
+
11
- 読み込んだtxtがhtml含むもの、`eval`は使えませんね。失礼しました。
33
+ ぜったいhtmlじゃなきゃヤダ、っていう場合は読み込んだtextからdomツリー作るスクリプトを書いて、頑張るしかさそうね。

1

質問をよく読んで回答

2016/07/02 05:37

投稿

shi_ue
shi_ue

スコア4437

test CHANGED
@@ -1 +1,11 @@
1
1
  `eval`を使えばいいかもしれませんが、文法がめちゃくちゃ・・・
2
+
3
+
4
+
5
+ 追記
6
+
7
+ ---
8
+
9
+ まあ、呼び出し元がアレなのはともかく。
10
+
11
+ 読み込んだtxtがhtmlを含むものなので、`eval`は使えませんね。失礼しました。