<select name="begin" size="1">で、値を2007 CommentsAdd Star
<select name="finish" size="1">で値を2015と得たとします。
<select name="during" size="1">で、
int j = finishの値 - beginの値 + 1;
int i2;
int[]no=new int[10];
for(int i=1;i<11;i++){
if((int)j / i == j / i){
i2 +=1;
no[i2] = i;
}
}
などのようにして、約数を算出し、それをduringのドロップダウンリストに作成したいのです。
教えてください。
Javascriptの記述だと思います。
この回答のコードに書き足しました。
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 。
と、なります。
この回答のコードに書き足しました。
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 。
と、なります。
これは、別の質問なので、遠慮します。ありがとうございました。
この質問のページから、別のページ(servlet)に飛ばしたときに選んだ年などを取りたいということですよね。
request.getParameter() は、選ばれた option の value を取得するので、begin の option を jsp で作っていくときに、value は "nen" + j ではなく、nens[j] を指定します。
finish の option の value は、begin のものを使うようにしています。
during は、見えている値を value に入れるようにしています。
これは、別の質問なので、遠慮します。ありがとうございました。
2017/03/16 09:16:41この質問のページから、別のページ(servlet)に飛ばしたときに選んだ年などを取りたいということですよね。
2017/03/16 09:41:14request.getParameter() は、選ばれた option の value を取得するので、begin の option を jsp で作っていくときに、value は "nen" + j ではなく、nens[j] を指定します。
finish の option の value は、begin のものを使うようにしています。
during は、見えている値を value に入れるようにしています。