読み込んだテキストをHTMLページ内に表示する

広告

今までのサンプルではサーバから読み込んだテキストファイルの内容をダイアログで表示していました。ここでは読み込んだファイルの中身をHTMLページ内の指定した位置に表示してみます。

まず表示するテキストをHTMLページ内のどの位置に表示するかを指定すると共に表示する領域を確保します。例えば次のように記述します。

<html>
<head>
<title>テキスト表示テスト</title>
</head>
<body>

<h1>テキスト表示テスト</h1>

<form>
<input type="button" value="ファイル読み込み" onClick="loadText()">
</form>

<div id="disp"></div>

</body>
</html>

上記の「<div id="disp"></div>」の箇所が読み込んだテキストを表示する場所です。現在は<div>と</div>の間に何も記述されていませんのでテキストを読み込む前は何も表示されていませんが、読み込んだ後でこの部分を書き換えるようにします。また後でノードを取得するための識別子として<div>要素にはIDが設定されています。

書き換える方法はDOMを用いて対象となるノードを取得し、「innerHTML」プロパティで値を書き換えます。(詳しくは『IDを指定してノードへアクセス』を参照して下さい)。

var node = document.getElementById("disp");
node.innerHTML = "変更後のテキスト";

後はサーバからファイルを読み込んだタイミングで上記を実行するだけです。

サンプルページ

今回はHTMLページ内のフォーム上のボタンをクリックするとサーバからファイルを読み込み、そのファイルの中身を指定した位置に表示するようにします。

sample1.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0.1//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html lang="ja">
<head>
<meta http-equiv="Content-Type" Content="text/html;charset=Shift_JIS">
<meta http-equiv="Content-Script-Type" content="text/javascript">

<title>テキスト表示テスト</title>

<script type="text/javascript">
<!--
var xmlHttp;

function loadText(){
  if (window.XMLHttpRequest){
    xmlHttp = new XMLHttpRequest();
  }else{
    if (window.ActiveXObject){
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
      xmlHttp = null;
    }
  }
  xmlHttp.onreadystatechange = checkStatus;
  xmlHttp.open("GET", "https://www.ajaxtower.jp/sample/readfile.txt", true);

  xmlHttp.send(null);
}

function checkStatus(){
  if (xmlHttp.readyState == 4 && xmlHttp.status == 200){
    var node = document.getElementById("disp");
    node.innerHTML = xmlHttp.responseText;
  }
}

// -->
</script>

</head>
<body>

<h1>テキスト表示テスト</h1>

<form>
<input type="button" value="ファイル読み込み" onClick="loadText()">
</form>

<div id="disp"></div>

</body>
</html>

まずHTMLページを表示すると次のように表示されます。

ファイルを読み込みHTMLページ内に表示する

フォームのボタンをクリックするとサーバからテキストファイルを読み込みHTMLページの指定の箇所を書き換えます。

ファイルを読み込みHTMLページ内に表示する

( Written by Tatsuo Ikura )