• 締切済み

JSの保存ダイアログについて

以下のコードは簡易メモ的なものです そこに書き込まれた内容を保存できるようにしたいのですがfunction dl()には何を書けばいいのでしょうか? 調べてみて function dl(C:\){ var a = document.createElement('a'); a.href = C:\; a.setAttribute('dl', name || 'noname'); a.dispatchEvent(new CustomEvent('click')); } としてみたのですがこれを書き込むと保存ダイアログはおろかtextの保存もできなくなってしまいます <input type="text" id="title"><br><br> <textarea id="memo" rows="8" cols="50"></textarea><br><br> <input type = "button" value="SAVE" onclick="dl();"> <script> var title = document.getElementById("title"); var memo = document.getElementById("memo"); window.onload = function() { var body_title = localStorage.getItem("title"); if (body_title != null) title.value = body_title; var body_memo = localStorage.getItem("memo"); if (body_memo != null) memo.value = body_memo; } title.onchange = function() { localStorage.setItem("title",title.value); } memo.onchange = function() { localStorage.setItem("memo",memo.value); } function dl(){ } </script>

みんなの回答

  • b0a0a
  • ベストアンサー率49% (156/313)
回答No.2

function dl(){ var a = document.createElement('a') a.href = URL.createObjectURL(new Blob([memo.value])) a.download = title.value+'.txt' a.click() }

全文を見る
すると、全ての回答が全文表示されます。
noname#247307
noname#247307
回答No.1

保存ダイアログを出すのは無理ですね。保存時にダイアログが現れるのは、あれはブラウザが勝手に実装しているものであり、JavaScriptなどから制御できるものではありません。(やりようがないことはないと思いますが、ブラウザがバージョンアップして仕様が変われば動かなくなるようなシロモノになります) 単にテキストファイルに保存するだけならこんな感じ。たいていはダウンロードフォルダにファイルが自動保存されます。 function dl(){ var fname = document.getElementById("title").value; var value = document.getElementById("memo").value; var a = document.createElement('a'); a.href = "data:text/plain," + encodeURIComponent(value); a.download = fname + ".txt"; a.dispatchEvent(new CustomEvent('click')); }

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • JSのコードで保存ができません

    以下のコードなのですがnameの部分だけ保存ができません なぜなのでしょうか <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <meta name1="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, user-scalable=no"> <link rel="stylesheet" href="components/loader.css"> <script src="components/loader.js"></script> </head> <body> <table border="3" align="center" style=border-spacing:0px;> <tr> <th width="20" height="30">Day</th> <th width="80">name</th> <th width="70">in</th> <th width="100">out</th> <th width="100">total</th> </tr> <tr> <th><input type="text" id="day" style="width : 30px; height : 20px;"></th> <td><input type="text" id="name" style="width : 80px; height : 20px;"></td> <td><input type="text" id="in_m" style="width : 50px; height : 20px;"></td> <td><input type="text" id="out_m" style="width : 50px; height : 20px;"></td> <td><input type="text" id="total" style="width : 50px; height : 20px;"></td> </tr> </table> <script> //保存関係 var day = document.getElementById("day"); var name = document.getElementById("name"); var in_m = document.getElementById("in_m"); var out_m = document.getElementById("out_m"); var total = document.getElementById("total"); window.onload = function() { var body_day = localStorage.getItem("day"); var body_name = localStorage.getItem("name"); var body_in_m = localStorage.getItem("in_m"); var body_out_m = localStorage.getItem("out_m"); var body_total = localStorage.getItem("total"); if (body_day != null) day.value = body_day; if (body_name != null) name.value = body_name; if (body_in_m != null) in_m.value = body_in_m; if (body_out_m != null) out_m.value = body_out_m; if (body_total != null) total.value = body_total; } day.onchange = function() { localStorage.setItem("day",day.value); } name.onchange = function() { localStorage.setItem("name",name.value); } in_m.onchange = function() { localStorage.setItem("in_m",in_m.value); } out_m.onchange = function() { localStorage.setItem("out_m",out_m.value); } total.onchange = function() { localStorage.setItem("total",total.value); } </script> </body> </html>

  • 複数のtextareaの保存について

    下記のコードのようにtextareaが二つあったとします id="a"は保存できましたがid="b"はどうやって保存するのでしょうか?("a", "b")としても無理でした どのようにすれば複数保存できるのでしょうか? ご回答お願いします <html> <head> </head> <body> <textarea id="a"></textarea> <textarea id="b"></textarea> <script> var a = document.getElementById("a"); window.onload = function() { var body = localStorage.getItem("a"); if (body != null){ a.value = body; } }; a.onchange = function() { localStorage.setItem("a",a.value); }; </script> </body> </html>

  • localStorage

    今までCookieを使っていたのですが、最近localStorageの存在を知り使ってみました。 質問ですが、サンプルを参考に下記のフォームを作りました。 無事に値を取り出せ、document.writeで文字の方は表示できるのですが、 img srcの画像の表示方法がわかりません。 document.write("<img src='localStorage.uUrl'>");←これが間違っているのはわかるのですが、 1.htmlのURLフォーム欄に、http://cmm001.goo.ne.jp/img/logo/goo.gif を書いて、2.htmlで表示する方法を教えて下さい。 ----1.html---- <script> (function(){ // 最初にローカルストレージが使えるか調べる。使えない場合は何もしない if (!window.localStorage) return; // ローカルストレージからフォームにデータを戻す document.getElementById("uName").value = window.localStorage.getItem("uName") || ""; document.getElementById("uUrl").value = window.localStorage.getItem("uUrl") || ""; // データ送信時にローカルストレージにフォーム内容を保存する document.getElementById("dataForm").addEventListener("submit", function(){ window.localStorage.setItem("uName", document.getElementById("uName").value); window.localStorage.setItem("uUrl", document.getElementById("uUrl").value); alert("データを保存しました"); }, true); })(); </script> <h1>ローカルストレージを利用したフォーム</h1> <form id="dataForm" method="post" action="" onsubmit="return false"> 名前:<input type="text" name="uName" id="uName"><br> URL:<input type="text" name="uUrl" id="uUrl"><br> <input type="submit" value="送信"> </form> ----2.html---- <script> (function(){ // ローカルストレージからフォームにデータを戻す document.getElementById("uName").value = window.localStorage.getItem("uName") || ""; document.getElementById("uUrl").value = window.localStorage.getItem("uUrl") || ""; document.write(localStorage.uUrl); document.write("<img src='localStorage.uUrl'>"); })(); </script>

  • javascriptで困っています。教えてください

    html5でcanvasに描いた画像をsave_buttonを押してlocalStorageで保存して、それをload_buttonをおして読み込もうとしているのですが、うまくいきません。 canvas.toDataURL();でデータを6bit毎に分割できています。 それを保存して、 var base64 = window.localStorage.getItem("saveKey");で読み込むこともできています。 その後canvasに描画できません。 よろしくお願いします。 var canvas = document.getElementById("myCanvas"); $("#save_button").click(function () {    // Canvasからbase64エンコーディングされた画像データを取得する var canvas = document.getElementById("myCanvas"); var base64 = canvas.toDataURL(); // LocalStorageに保存する window.localStorage.setItem("saveKey", base64); }); $("#load_button").click(function () { // LocalStroageからデータを取得する var base64 = window.localStorage.getItem("saveKey"); // Imageオブジェクトを作成し、src属性にデータを設定する var image = new Image(); image.src = base64; image.onload = function(){ // 画像の読み込みが終わったら、Canvasに画像を反映する。 canvas.drawImage(image, 0, 0); } });

  • undef datalistがundefinedに

    javascript datalistがundef datalistがundefinedになります。 var datalist = { data3: "hoge3", } // str=[]; var a = { data1: "hoge1", data2: "hoge2" } function SaveDataToLocalStorage(datalist) { var a = []; a.push(JSON.parse(localStorage.getItem('session'))); localStorage.setItem('session', JSON.stringify(a)); // Parse the serialized data back into an aray of objects a = JSON.parse(localStorage.getItem('session')) || []; // Push the new data (whether it be an object or anything else) onto the array alert(datalist); a.push(datalist); console.log(datalist); // Alert the array value alert(a+"datalist"); // Should be something like [Object array] // Re-serialize the array back into a string and store it in localStorage localStorage.setItem('session', JSON.stringify(a)); }

  • JSで子ページから親ページのラジオボタンのチェック

    JS初心者です。 サブページのボタンを押して、親ページのラジオボタンにチェックを入れたいのですが... セレクトボタンでは何とかなったのですが、どうしてもラジオボタンで対応したいのです。 どうかご教授お願いいたします。 親画面 <script type="text/javascript"> <!-- function bodyOpn(value){ window.open("size.html"); url=value; } var url; //--> </script> <body> <form method="post" name="myForm" onSubmit="return check()" target="_top"> <span id="selection01" title="bodystyle" onmouseout="spanOff()"> スタイル<sup>*</sup><a href="javascript:bodyOpn('selection01')">サイズ表</a><br> <label title="slim"> <input type="radio" name="selection01" onchange="changeBody(this)" value="slim" /> SLIM(スリム)</label><br /> <label title="reguler"> <input type="radio" name="selection01" onchange="changeBody(this)" value="reguler" /> REGULER(標準)</label><br /> </span> </form> </body> サブ画面(size.html) <script language="javascript"> <!-- function btn(n) { var bodyNo = n var btnImage = document.getElementById(bodyNo).innerHTML; window.opener.document.myForm.option01.selectedIndex=n; window.close(); } //--> </script> <body> <a href="javascript:body('1')" id="1">スリム</a> <a href="javascript:body('2')" id="2">レギュラー</a> </body>

  • ローカルストレージがうまくいかない

    ローカルストレージを使って変数内のテキストを、保存してリロードしても削除するまで残るようにしたいのですがうまくいきません。 変数を指定してもダメで、テキストしか入れられないと聞いたのですがそうなのでしょうか? 下記のようにしても残ってくれません。 変数の中身を残すにはどうしたらいいでしょうか。 localStorage.getItem("onePrice"); var onePriceResult = document.getElementById('onePriceResult').innerHTML = あああ'; localStorage.setItem("onePrice", onePriceResult);

  • IDの取得、繰り返しに問題があるようなんですが・・・

    複数のセレクトの中から選んだ内容をコピーするスクリプトなんですが、 function answerPut(){ var answer = document.getElementById("s1"); var answerCopy = document.getElementById("answer"); answerCopy.value=answer.value } ▲このように単独で1つのフォームからならコピーできたのですが これを複数のフォームに対応させるためにforを使ってみたのですが どうにもうまくいきません。お知恵を拝借いただければ幸いです。 ▼うまくいかないスクリプト <html> <body> <script type="text/javascript"> function answerPut(){ for(var i=1; i<=3; i++){ var answer = document.getElementById(id+i); var answerCopy = document.getElementById("answer"); answerCopy.value=answer.value } } </script> (1)<select name="" id="s1" onChange="answerPut();"> <option value="あ1">あ1</option> <option value="い1">い1</option> <option value="う1">う1</option> </select> (2)<select name="" id="s2" onChange="answerPut();"> <option value="あ2">あ2</option> <option value="い2">い2</option> <option value="う3">う2</option> </select> (3)<select name="" id="s2" onChange="answerPut();"> <option value="あ1">あ3</option> <option value="い2">い3</option> <option value="う3">う3</option> </select> <br> <br> ▼選んだ回答内容が入る<br> <input type="text" name="9" value="" size="40" id="answer"> </body> </html>

  • JSでのタグの削除方法について

    以下のコードなのですが現在地を取得してリスト化して保存するというものです 追加された<a>の横に削除ボタン(del_btn)を設置し、押されたらリストを削除をいう風にしたいのですが どうしてもできません コードの下部の //削除ボタンが押されたとき の部分の正しい記述がわかりません ご教授お願いします <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, user-scalable=no"> <script src="components/loader.js"></script> <link rel="stylesheet" href="components/loader.css"> <link rel="stylesheet" href="css/style.css"> </head> <body bgcolor="#C2F2A5"> <center> <font face="HG創英角ポップ体"> <h1>ブックマークMAP</h1> </center> <div id="new_div"> <span id="name">場所:<input id="name_txt" type="text" value="" size="20" /><br /></span> </font> <input id="save_btn" type="button" value="記録" /> </div> <div id="list_div">なし</div> <script> function $(id) { return document.getElementById(id); } //初期処理 var items = []; window.onload = function() { if (window.localStorage == undefined && navigator.geolocation == undefined) { alert("HTML5未対応端末です"); return; } //既存リスト表示 var list = localStorage.getItem("shoplist"); if (list == null) { list = ""; }else{ items = list.split("\n"); showItems(); } //記録ボタン、削除ボタンを押したときの設定 $("save_btn").onclick = save_btn_clickHandler; $("del_btn").onclick = del_btn_clickHandler; }; //ブックマーク一覧の表示 function showItems() { var map_url = "http://maps.google.co.jp/maps?q="; var html = "<ul>"; for (var i in items) { var data = items[i].split("\t"); var name = data[0]; var lat = data[1] var lon = data[2] var link = "<a href='"+map_url+lat+","+lon+"'>"+name+"</a>"; html += "<li>"+link+"<input id='del_btn' type='button' value='削除'>"+"</li>"; } html += "</ul>"; $("list_div").innerHTML = html; } //保存ボタンを押したときの設定 function save_btn_clickHandler() { if ($("name_txt").value == "") { alert("場所を入力してください"); return; } //位置情報の取得 navigator.geolocation.getCurrentPosition( successCallback, errorCallback); $("save_btn").value = "現在地取得中" } //成功したとき function successCallback(position) { var lat = position.coords.latitude; var lon = position.coords.longitude; var name_txt = $("name_txt"); //場所+位置情報を保存 var item = name_txt.value + "\t" + lat + "\t" + lon; items.push(item); var list = items.join("\n"); try { localStorage.removeItem("shoplist"); localStorage.setItem("shoplist", list); } catch (err) { alert("保存失敗"); } $("save_btn").value = "記録"; name_txt.value = ""; showItems(); } //失敗したとき function errorCallback(err) { alert("失敗("+err.code+")"+err.message); $("save_btn").value = "記録"; } //削除ボタンが押されたとき function del_btn_clickHandler(){ delete "<'a'>"; } </script> </body> </html>

  • jsでプルダウンで選択したものがうまく表示されない

    以下のhtml文があります。 <!DOCTYPE html> <html> <head> <title></title> <script language="javascript" type="text/javascript"> function onButtonClick() { var val = document.forms.form1.textBox1.value; var target = document.getElementById("output"); if (val == "Penguin") { target.innerHTML = "合っています。"; } else { target.innerHTML = "間違っています。"; } } </script> </head> <body> <form action="" id="form1"> <div>"Penguin"と入力してください。</div> <input id="textBox1" type="text" value="" /> <input type="button" value="Exec" onclick="onButtonClick();" /> </form> <div id="output"></div> </body> </html> Penguinと入力すると合っていますと表示が出ます。 これを、プルダウン方式にしました。 <!DOCTYPE html> <html> <head> <title></title> <script language="javascript" type="text/javascript"> function selectboxChange() { var val1 = document.forms.form1.Select1.value1; var target = document.getElementById("output"); if (val1 == "要素1") { target.innerHTML = "合っています。"; } else { target.innerHTML = "間違っています。"; } } </script> </head> <body> <form name="form1" action=""> <select id="Select1" onchange="selectboxChange();"> <option>---</option> <option value1 == "要素1">要素1</option> <option>要素2</option> <option>要素3</option> <option>要素4</option> <option>要素5</option> </select> </form> <div id="output"></div> </body> </body> </html> これにすれば、要素1を選択すれば、会っていますと表示されるのですが、されません。 どうしたら改善されますか。

解釈に関する質問
このQ&Aのポイント
  • 質問者は、「彼がとても興奮していたので、喋り方なんかに気を配ってられなかった」という解釈であっているのか分からないと述べています。
  • 質問者は、この文にどのように解釈すれば良いのか解説を求めています。
  • この質問は、「The Brothers Karamazov」の特定のシーンの解釈に関するものです。
回答を見る

専門家に質問してみよう