▽1
●
a-kuma3 ●200ポイント ベストアンサー |
この回答のコードに書き足しました。
javascript で during を作ってます。
<select name="begin" size="1"> <% for(int j=1;j<nens.length;j++){ %> <option value="<%="nen"+j %>"><%=nens[j] %></option> <% } %> </select><br> <select name="finish" size="1"></select> <!-- during を足してます --> <br> <select name="during" size="1"></select> <script> window.addEventListener("DOMContentLoaded", function() { var begin = document.querySelector('select[name="begin"]'); var finish = document.querySelector('select[name="finish"]'); begin.addEventListener("change", function() { var s = ""; var selected = false; Array.prototype.forEach.call(begin.options, function(opt) { if (selected) { s += '<option value="' + opt.value + '">' + opt.innerHTML + '</option>'; } if (opt.selected) { selected = true; } }) finish.innerHTML = s; }); // ここから、この質問の回答です function create_during() { var opt_begin = Array.prototype.find.call(begin.options, function(opt) { return opt.selected; }); var opt_finish = Array.prototype.find.call(finish.options, function(opt) { return opt.selected; }); var v_begin = parseInt(opt_begin.innerHTML, 10); var v_finish = parseInt(opt_finish.innerHTML, 10); var during = document.querySelector('select[name="during"]'); var s = ""; var n = v_finish - v_begin + 1; for (var k = 1 ; k <= n ; ++k) { if (n % k == 0) { s += '<option value="' + k + '">' + k + '</option>'; } } during.innerHTML = s; } begin.addEventListener("change", create_during); finish.addEventListener("change", create_during); // ここまで }); </script>
begin == 2007、finish == 2015 で、during が 1、3、9 。
begin == 2007、finish == 2016 で、during が 1、2、5、10 。
と、なります。
約数を確認する方法があればと思います。そこまでいっていないんじゃないかと。