htmlのラジオボタンの値をjavaのみでファイル出力

ラジオボタンの値をテキストファイルやcsvファイルなどに保存し,解析しやすくしたいと思って調べた.
phpのコードを別に用意せずに簡潔にjavascriptだけでできないかなーと思って書いたのでメモ.
ちなみに恥ずかしながら初めてjavascript書きました...

結論から先に

  • phpを経由せずにjavascriptでのみでできました
  • ファイル名指定やローカルへの直接保存はできず..
  • リンク先から拡張子なしでダウンロードすることはできました
  • javascriptで配列の値を直接受け取って出力することもできる

html側

<a id="myDownload" href="#">Click here to download.</a>

javascript

var $id = function(id) { return document.getElementById(id); }
window.onload = function()
{
 $id("myDownload").addEventListener("click", function(){
 var href = "data:application/octet-stream,";
 var value = 1; // value to be output
 href = encodeURIComponent(value);
 this.setAttribute("href", href);
 }, false);
}

ただ,フォームを作っていると,ページを切り替えながら複数の回答を取得した配列値を同一ファイルに保存したくなることは結構あると思います.
その場合でもphpに値を渡さず,javaの配列に格納した値を直接ファイル出力することができます.

こんなかんじ

html側

<div id = "myForm">
  <!-- radio buttons -->
  <p>
  <input type="radio" id=5 value="5" name="rate" onclick="cl(4)"> 5 <br>
  <input type="radio" id=4 value="4" name="rate" onclick="cl(3)"> 4 <br>
  <input type="radio" id=3 value="3" name="rate" onclick="cl(2)"> 3 <br>
  <input type="radio" id=2 value="2" name="rate" onclick="cl(1)"> 2 <br>
  <input type="radio" id=1 value="1" name="rate" onclick="cl(0)"> 1 <br>
  <p>

  <!-- submit button -->
  <button type="submit" name="myButton" value="test" onClick="mySubmit();"> Submit score <br>
</div>

<a id="myDownload" href="#">Click here to download.</a>

java

document.getElementById("myDownload").style.display = "none"; // hide download link
ScoreData = new Array(-1, -1, -1);
count = 0;
if(count == 3)
{
  document.getElementById("myDownload").style.display = "block"; // show download link
}

function mySubmit()
{
  var rates = document.getElementsByName("rate");
  var rate_value;
  for(var i = 0; i < rates.length; i++){
    if(rates[i].checked){
      rate_value = rates[i].value;
    }
  }
  ScoreData[ count ] = rate_value;
  document.getElementsByName("rate")[rate_value-1].checked = false;
  count++;
}