htmlでExcelのような検索機能をつけて・・・

Fujillin さんを混乱させるには!?
iframe を使って、他のファイルからも読み込んでみるも、読み込みを完了してから、その要素を返すのが面倒で、アラートさせているうちに、ごまかす。

<!DOCTYPE html>
<title></title>

<style>
table, td, th {
  border :1px #080 inset;
}
</style>

<table id="table1">
<tr><th>名前</th><th>英語</th><th>国語</th><th>算数</th></tr>
<tr><td>田中</td><td>80</td><td>80</td><td>80</td></tr>
<tr><td>鈴木</td><td>90</td><td>50</td><td>70</td></tr>
<tr><td>山田</td><td>60</td><td>95</td><td>90</td></tr>
<tr><td>小林</td><td>70</td><td>90</td><td>75</td></tr>
<tr><td>鈴木</td><td>40</td><td>30</td><td>40</td></tr>
</table>

<hr>
<h3>*******  テスト用  *******</h3>
<form action="#">
<P>
  名前:
  <input type="text" name="name" vlue="">
  <input type="button" value="検索" onclick="test(this.form)">
<p>
<p>
  結果:
  <textarea name="result" value="" style="width:24em;" rows="5" readonly>
  </textarea>
 </p>
</form>


<script type="application/javascript; version=1.8">

const createLookUp =
  (function (getCellsText)
    (function (table, colNo)
      let (data = Array.prototype.reduce.call(
        table.querySelectorAll ('tr td:nth-of-type('+ colNo + ')'),
          (function (a, td)
            (a.text.push (td.textContent),
             a.rows.push (td.parentNode),
             a)), { text: [], rows: [] }))

      (function (str, idx)
        let (row = data.text.indexOf (str, idx))
          (0 <= row)
          ? getCellsText (data.rows[row])
          : [])))

  (function (tr)
    Array.prototype.reduce.call (tr.childNodes,
      (function (a, n)
        (n.nodeType === 1)
        ? a.concat (n.textContent)
        : a), []))


const getTableFromURL = function (src, id) {
  var fr = document.createElement ('iframe');
  fr.src = src;
  fr.style.display ="none";
  document.body.appendChild (fr);
  alert("読み込みが終了しました");
  return fr.contentWindow.document.getElementById (id);
};

//var lookup = createLookUp (document.querySelector('#table1'), 1); // 0列目ではない!
var lookup = createLookUp (getTableFromURL ('0028.html', 'table1'), 1); // 0列目ではない!


function test (f) {
  var name = f.elements["name"].value;
  var i, r, m = [], data = ["名","英","国","数"];

  var cells = lookup (name);
  
  for (i = 0; i < 4; i++) {
    m.push (['[', data[i], ']:', cells[i]].join (''))
  }
  f.elements["result"].value = m.join('\n');
}

</script>