HTA innertHTMLまわりでうまくいかない
あいかわらずアンケートのほうで遊んでいます。
いったんは作れたんですが,JavaScriptの情報をあさってると,便利そうなところにどんどん出会うので,それに従って書き直しているところ。
とりあえずhtmlを作る部分 ブラウザでは動くHTMLをのせます。
<!doctype html> <html> <head> <meta charset="utf-8"> <title>無題ドキュメント</title> <style type="text/css"> table{border-collapse: collapse;} table,tr,td{border: solid 2px black;} td.clsmondai{padding-left: 5px;font-weight: bold;background-color: black;color: white;width:400px} td.clskaito{padding-left: 20px;background-color: antiquewhite} </style> <script> function init(){ makeElement(1,"たべものをえらべ","food","select",Array.from(new Array(41)).map((v,i)=> i + 1)) makeElement(2,"ペットをえらべ","pet","radio",["犬","猫","バナナ"]) makeElement(3,"ペットをえらべ","pet2","check",["犬","猫","バナナ"]) makeElement(4,"てすとですよ","textar","text") makeElement(5,"てすとですとも","text","multi") } function makeElement(No,mondai,name,type,arr){ var html=[]; var tmp; switch(type){ case "select":tmp = makeSelectElement(name,"select",arr);break case "radio":tmp = makeSelectElement(name,"radio",arr);break case "check":tmp = makeSelectElement(name,"checkbox",arr);break case "text":tmp="<input type='text' name='" + name + "' size='45' />";break case "multi":tmp="<textarea name='" + name +"' rows='5' cols='46' ></textarea>";break } html.push(document.getElementById("table0").innerHTML) html.push("<tr><td class='clsmondai'>" + mondai + "</td></tr>") html.push("<tr><td class='clskaito' id='" + name + "'></td>") document.getElementById("table0").innerHTML=html.join("") if (type=="select") { document.getElementById(name).appendChild(tmp) } else { document.getElementById(name).innerHTML=tmp } } function makeSelectElement(name,type,arr){ switch(type){ case "select": var element = document.createElement("select") for(var i=0;i<arr.length;i++){ var option=document.createElement("option") option.value=arr[i] option.innerText=arr[i] element.appendChild(option) } break case "radio": case "checkbox": //間違いじゃないよ var tmp=[] for(var i=0;i<arr.length;i++){ tmp.push("<input type='"+ type +"' name='" + name + "' value='" + arr[i] +"'>"+arr[i]+"<br>") } element=tmp.join("") break } return element } </script> </head> <body onload="init()"> <form id="formFld"> <table id="table0"> </table> <input type="button" href="#" value="送信する" onClick="PostData()"/> </form> </body> </html>
画面はこんな感じになる
アンケート部分を作るところをかなりシンプルにできたつもりです。やってておもしろかった。
ただ,これをHTAにすると,innerHTMLを扱う周辺でエラーが出てうまく動かない。
未知の実行時エラーとでる。ほんと意味がワカラナイ 未知って
でもがんばる
いろいろ試しているうちに,うまくいった段階を破壊することがあるので,とりあえず記録を残しにきました(;´∀`)