简体   繁体   English

如何使用 JavaScript 将 slider 上选择的值保存到 csv?

[英]How to save values chosen on slider to csv using JavaScript?

The final div of my code contains 5 sliders (I show here just 2) and a “finish” button.我的代码的最后一个 div 包含 5 个滑块(我在这里只显示 2 个)和一个“完成”按钮。 On click, I want to be able to:点击后,我希望能够:

  1. Download a CSV file with the chosen values下载具有所选值的 CSV 文件
  2. Display the next div (without displaying the values)显示下一个 div(不显示值)

I can only use JS and HTML.我只能使用JS和HTML。

 /// phase C //// var slider1 = document.getElementById("q1"); var demo1 = document.getElementById("demo1"); var vq1 = slider1.value; demo1.innerHTML = slider1.value; slider1.oninput = function() { demo1.innerHTML = this.value; } var slider2 = document.getElementById("q2"); var demo2 = document.getElementById("demo2"); var vq2 = slider2.value; demo2.innerHTML = slider2.value; slider2.oninput = function() { demo2.innerHTML = this.value; } function Phase_E_action() { document.getElementById("Phase_D").hidden = true; document.getElementById("Phase_E").hidden = false; var fileContent = vq1 + "," + vq2; var bb = new Blob([fileContent], { type: 'text/plain' }); var a = document.createElement('a'); a.downoload = "Exp" + Date().toString().slice(4, 24) + ".csv"; a.href = window.URL.createObjectURL(bb); a.click(); }
 <div id="Phase_D"> <span class="v50_15"><h1>Please state your opinion on Bob</h1></span> <div class="slidecontainer"> <span class="v50_16"><p>On a scale from 0 to 100, when 0 means mean and ten means nice, how would you rate Bob?</p> <input type="range" min="1" max="100" value="50" class="slider" id="q1"> <p>Value: <span id="demo1"></span></p> </span> </div> <div class="slidecontainer"> <span class="v50_17"><p>On a scale from 0 to 100, when 0 means bad and ten means good, how would you rate Bob?</p> <input type="range" min="1" max="100" value="50" class="slider" id="q2"> <p>Value: <span id="demo2"></span></p> </span> </div> </div>

you need to put variable vq1, vq2 inside callback of input event or call directly slider1.value inside Phase_E_action() function您需要将变量vq1, vq2放在input事件的回调中或在Phase_E_action() function 中直接调用slider1.value

and for download it need to append to the current page下载它需要 append 到当前页面

 var vq1, vq2; var slider1 = document.getElementById("q1"); var demo1 = document.getElementById("demo1"); demo1.innerHTML = slider1.value; slider1.oninput = function() { // put the variable here vq1 = demo1.innerHTML = this.value; } var slider2 = document.getElementById("q2"); var demo2 = document.getElementById("demo2"); demo2.innerHTML = slider2.value; slider2.oninput = function() { vq2 = demo2.innerHTML = this.value; } function Phase_E_action() { var fileContent = vq1 + "," + vq2; console.log(fileContent) var bb = new Blob([fileContent], { type: 'text/plain' }); var a = document.createElement('a'); a.download = "Exp" + Date().toString().slice(4, 24) + ".csv"; a.href = window.URL.createObjectURL(bb); a.innerHTML = 'fff' document.body.appendChild(a) a.click(); document.body.removeChild(a); }
 <div id="Phase_D"> <span class="v50_15"> <h1>Please state your opinion on Bob</h1> </span> <div class="slidecontainer"> <span class="v50_16"> <p>On a scale from 0 to 100, when 0 means mean and ten means nice, how would you rate Bob?</p> <input type="range" min="1" max="100" value="50" class="slider" id="q1"> <p>Value: <span id="demo1"></span></p> </span> </div> <div class="slidecontainer"> <span class="v50_17"> <p>On a scale from 0 to 100, when 0 means bad and ten means good, how would you rate Bob?</p> <input type="range" min="1" max="100" value="50" class="slider" id="q2"> <p>Value: <span id="demo2"></span></p> </span> </div> <button onclick="Phase_E_action()"> Download CSV </button>

note: you can't use download function here because the iframe is sanboxed and allow-downloads flag is not set注意:您不能在此处使用下载 function,因为 iframe 已被加密并且未设置allow-downloads标志

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM