昨日、ご質問をさせていただきました、ykek1108です。
Qookerというアンケートサービスのhtml中にJavaScriptを実装し、数値入力欄に「0」を代入することが無事にできました。
ありがとうございます。細切れになって恐縮ですが、今度は、この「0」の数値を変更したタイミングで、計算式を実行し、
別の入力欄に結果を表示したいと思っておりますが、DOMでのイベントが発生せず、動作しておりません。何度も恐縮ですが、
方法についてご教示いただければと思い、再度投稿させていただきました。どうぞよろしくお願いいたします。
Qookerによって生成されたHTMLは以下の通りです。
html
1 <tr> 2 <th class="matrix_column"> 3 (02)合計数 = (02)①+(02)② ※自動計算 4 </th> 5 <td id="response_f_94-10-1-0" class="matrix_select" > 6 <input name="response_data[response_f_94][q1_2][_n]" type="text" value="" class="matrix_number"> 7 </td> 8 </tr> 9 <tr> 10 <th class="matrix_column_reverse"> 11 (02)①数値1 12 </th> 13 <td id="response_f_94-10-2-0" class="matrix_select_reverse" > 14 <input name="response_data[response_f_94][q1_2_1][_n]" type="text" value="" class="matrix_number"> 15 </td> 16 17 </tr> 18 <tr> 19 <th class="matrix_column"> 20 (02)②数値2 21 </th> 22 <td id="response_f_94-10-3-0" class="matrix_select" > 23 <input name="response_data[response_f_94][q1_2_2][_n]" type="text" value="" class="matrix_number"> 24 </td> 25 </tr>
マトリクス上になったテーブルに、合計数と数値1、数値2の3つのテキストボックスがあり、ページ読み込み時はすべて「0」
と表示されております。ここで、数値1と数値2に数値を入れたとき、その合計数を「合計数」テキストボックスに表示させたい
と考えています。
次に示すJavaScriptは、このhtmlの下方に埋め込み形式で実装しています。
html
1<script> 2var aryTableTag = document.QFORM.getElementsByTagName("table"); 3var intVal1 = 0; 4var intVal2 = 0; 5var intVal3 = 0; 6var strQ12 = ""; 7var strQ121 = ""; 8var strQ122 = ""; 9 10for (var i = 0; i < aryTableTag.length; i++){ 11 var objTableTag = aryTableTag[i]; 12 if (objTableTag.id == undefined || objTableTag.id.split("-")[2] != "matrix") 13 {continue;} 14 15 var strMatrixType = objTableTag.id.split("-")[1]; 16 17 var aryInputTag = objTableTag.getElementsByTagName("input"); 18 19 for (var j = 0; j < aryInputTag.length; j++){ 20 21 var strName = aryInputTag[j].name 22 23 if (strName.indexOf("[q1_2]") !== -1){ 24 aryInputTag[j].value = intVal3; 25 strQ12 = strName; //合計数テキストボックスのname属性を取得 26} 27 if (strName.indexOf("[q1_2_1]") !== -1){ 28 aryInputTag[j].value = intVal1 29 strQ121 = strName; //数値1 テキストボックスのname属性を取得 30} 31 32 if (strName.indexOf("[q1_2_2]") !== -1){ 33 aryInputTag[j].value = intVal2 34 strQ122 = strName; //数値2 テキストボックスのname属性を取得 35} 36} 37} 38//「合計数」テキストボックスにフォーカスがあったとき、「数値1」と「数値2」の合計を 39//求め、「合計数」欄に表示させたい 40 document.getElementsByName(strQ12).onfocus = function(){ 41 calA(); 42 }; 43 function calA(){ 44 var intQ122 = strQ122.innerText 45 var intQ121 = strQ121.innterText 46 var intQ12 = intQ122 + intQ121 47 strQ12.value = intQ12; 48} 49 50</script>
昨日ご教示いただいたのは、「合計数」「数値1」「数値2」にページロード時に「0」を代入することでした。
そこは成功しました。
そのあと、「合計数」のテキストボックスにフォーカスが入った際に、「数値1」+「数値2」を実行したいのですが、
何も起こりません。
何度も申し訳ございませんが、どなた様か、原因をご教示いただければ幸いです。
どうぞよろしくお願い致します。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/01 00:48