以下のphpコード(tangen_top.php)で、
**2つ目のscriptタグ内(bodyの中)**に、
関数「sendRequestToEdit(hikisuu)」が定義したのですが、
これをそれよりも下にあるbutton 「編集」をクリックしたときに呼び出すようにした、
onclick="sendRequestToEdit(this.value)"
のですが、
クリックするとなぜか、
Chromeのデベロッパーツールが以下のようなエラー、
Uncaught ReferenceError: sendRequestToEdit is not defined
at HTMLButtonElement.onclick (tangen_top.php:1)
を吐きます。
不可解な点は、以下に貼るtangen_top.phpは、一行目にはhtml開始タグ以外何も書いていないのに、そこがエラーの場所だと言ってくることです。
しかも、デベロッパーツールのsourcesタブを開きながらボタン「編集」を押すとわかるのですが、なぜかボタンを押すと、横に表示されているマシンのディレクトリに、中身に「sendRequestToEdit(this.value)」とだけ書いてある同じファイル名のファイルtangen_top.phpが突如作成され、表示されるのです
以下にコードを張りますので、どこが間違っているかご指摘頂けると幸いです。
ただし、これはソースコードではなく、
ページ内での操作によってデータベース処理や、Ajaxによる別のphpプログラムとの連携処理などが行われ、
HTMLが最初の状態から色々変化した後の状態でデベロッパーツールのElementタブに表示されたものコピペしたものです。
このシステムの全容を説明しようsとするとややこしくなるので、一問一答の形で質問させて頂きます。
【ファイル:tangen_top.phpのなれの果て(もはやただのHTML)】
php
1<html lang="ja" dir="ltr"><head> 2 <meta charset="utf-8"> 3 <title>プロジェクトマネージャー</title> 4 5 <script type="text/javascript"> 6 function sendRequest(subject_name){ 7 if (subject_name =="") { 8 document.getElementById("disp_rec").innerHTML = ""; 9 return; 10 }else{ 11 if (window.XMLHttpRequest) { 12 // code for IE7+, Firefox, Chrome, Opera, Safari 13 xmlhttp = new XMLHttpRequest(); 14 } else { 15 // code for IE6, IE5 16 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 17 } 18 xmlhttp.onreadystatechange = function() { 19 if (this.readyState == 4 && this.status == 200) { 20 document.getElementById("disp_rec").innerHTML = this.responseText; 21 } 22 }; 23 xmlhttp.open("GET","tangen_get.php?subject_name="+subject_name,true); 24 xmlhttp.send(); 25 } 26 } 27 28 29 </script> 30 31 </head> 32 <body> 33 34 35 <select name="subject_name" onchange="sendRequest(this.value)"> 36 <option value="">Select a subject</option> 37 <option value="量子力学">量子力学</option><option value="統計力学">統計力学</option><option value="線形代数">線形代数</option><option value="複素関数">複素関数</option><option value="微分積分">微分積分</option><option value="熱力学">熱力学</option><option value="古典力学">古典力学</option><option value="電磁気学">電磁気学</option><option value="物性">物性</option> </select> 38 <div id="disp_rec"> 39 40 41 <meta charset="UTF-8"> 42 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 43 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 44 <title>Document</title> 45 <script> 46 function sendRequestToEdit(hikisuu){ 47 48 //クリックした編集ボタンに該当する単元の単元コード、科目名、単元の取得 49 const code_tangen = hikisuu; 50 const subject_name = document.querySelector('tr#'+code_tangen+' input[name="subject_name"]').value; 51 const tangen = document.querySelector('tr#'+code_tangen+' input[name="tangen"]').value; 52 53 //for debug 54 console.log("current selection:"+tangen); 55 56 if (window.XMLHttpRequest) { 57 // code for IE7+, Firefox, Chrome, Opera, Safari 58 xmlhttp = new XMLHttpRequest(); 59 } else { 60 // code for IE6, IE5 61 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 62 } 63 xmlhttp.onreadystatechange = function() { 64 if (this.readyState == 4 && this.status == 200) { 65 document.getElementById("add_rec").innerHTML = this.responseText; 66 } 67 }; 68 xmlhttp.open("GET","tangen_edit.php?code_tangen="+code_tangen+"&subject_name="+subject_name+"&tangen="+tangen,true); 69 xmlhttp.send(); 70 } 71 alert("W"); 72 alert(typeof sendRequestToEdit); 73 </script> 74 75 76<table border="1" id=""><tbody><tr><td>科目</td><td>単元</td><td></td><td>済or未</td></tr><tr id="1"><input type="hidden" name="code_tangen" value="1"><input type="hidden" name="subject_name" value="量子力学"><input type="hidden" name="tangen" value="一次元系の基本(イギ、オガワ等)"><td>量子力学</td><td>一次元系の基本(イギ、オガワ等)</td><td><button type="button" value="1" onclick="sendRequestToEdit(this.value)">編集</button></td><td><input type="checkbox" class="sumi"></td></tr><tr id="3"><input type="hidden" name="code_tangen" value="3"><input type="hidden" name="subject_name" value="量子力学"><input type="hidden" name="tangen" value="井戸型ポテンシャルをちゃんと理解"><td>量子力学</td><td>井戸型ポテンシャルをちゃんと理解</td><td><button type="button" value="3" onclick="sendRequestToEdit(this.value)">編集</button></td><td><input type="checkbox" class="sumi"></td></tr><tr id="8"><input type="hidden" name="code_tangen" value="8"><input type="hidden" name="subject_name" value="量子力学"><input type="hidden" name="tangen" value="角運動量の摂動(ゼーマン、スピン軌道など)"><td>量子力学</td><td>角運動量の摂動(ゼーマン、スピン軌道など)</td><td><button type="button" value="8" onclick="sendRequestToEdit(this.value)">編集</button></td><td><input type="checkbox" class="sumi"></td></tr><tr id="9"><input type="hidden" name="code_tangen" value="9"><input type="hidden" name="subject_name" value="量子力学"><input type="hidden" name="tangen" value="縮退ありの摂動論の形式論の理解"><td>量子力学</td><td>縮退ありの摂動論の形式論の理解</td><td><button type="button" value="9" onclick="sendRequestToEdit(this.value)">編集</button></td><td><input type="checkbox" class="sumi"></td></tr></tbody></table><br><br> <div id="add_rec">addrec</div> 77 78</div> 79 80 81</body></html>
回答3件
あなたの回答
tips
プレビュー