• ベストアンサー

javascriptにて質問です

javascriptで、各項目に数字の範囲を指定して、入力フォームに半角数字を入力して、その入力した数字が範囲内にある項目のみが表示されて、範囲外の項目は表示されずに下の項目が繰り上がって表示される みたいなことは可能でしょうか 例 項目A (1~100) 項目B (60~100) 項目C (30~70) 項目D (1~40) 項目E (50~50) で、入力フォームに50を入力すると 項目A (1~100) 項目C (30~70) 項目E (50~50) と言う風に50を範囲に含まないのが消えて、詰めて表示されるってのをやりたいんですが

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

こんな感じでしょうか? <script> function onButtonClick(f){ var num = f.elements["textBox1"].value==="" ? null :(parseInt(f.elements["textBox1"].value)); var mylist=[ {name:"項目A",s_num:1,e_num:100}, {name:"項目B",s_num:60,e_num:100}, {name:"項目C",s_num:30,e_num:70}, {name:"項目D",s_num:1,e_num:40}, {name:"項目E",s_num:50,e_num:50} ]; var div=document.getElementById("display_mylist"); while(div.firstChild){div.removeChild(div.firstChild);} var ul=document.createElement("ul"); for(var i=0;i<mylist.length;i++){ if(num==null || mylist[i]["s_num"]<=num && mylist[i]["e_num"]>=num){ var li=document.createElement("li"); li.appendChild(document.createTextNode(mylist[i]["name"]+"("+mylist[i]["s_num"]+"~"+mylist[i]["e_num"]+")")); ul.appendChild(li); } } div.appendChild(ul); } </script> <div id="display_mylist"></div> <form> <input type="text" name="textBox1" value=""> <input type="button" value="決定" onclick="onButtonClick(this.form);"> </form>

kuroneko5656
質問者

お礼

ありがとうございます! まさにやりたいと思っていたことそのままです! 何から何まで、感謝してもしきれません

その他の回答 (2)

  • Kaneyan-R
  • ベストアンサー率42% (1242/2891)
回答No.2

>これを流用して、決定ボタンを押した時にテキストボックス内の数値を・・・ var num = document.getElementById('id_textBox1').value; もしくは、 var objNum = document.getElementById('id_textBox1'); var num = objNum.value;

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

<script> var mylist=[ {name:"項目A",s_num:1,e_num:100}, {name:"項目B",s_num:60,e_num:100}, {name:"項目C",s_num:30,e_num:70}, {name:"項目D",s_num:1,e_num:40}, {name:"項目E",s_num:50,e_num:50} ]; //var num = null; var num = 50; for(var i=0;i<mylist.length;i++){ if(num==null || mylist[i]["s_num"]<=num && mylist[i]["e_num"]>=num){ document.write(mylist[i]["name"]+"("+mylist[i]["s_num"]+"~"+mylist[i]["e_num"]+")<br>"); } } </script> numがnullの場合は全リストを返します

kuroneko5656
質問者

補足

回答ありがとうございます 1から10まで聞いてしまうような物ですが、var num = 50;の所にテキストボックスに入力した数値を取得するにはどのように記述すればよいのでしょうか 調べて試してみたんですけど、どうにも上手くいかなくて <form name="form1" id="id_form1" action=""> <input name="textBox1" id="id_textBox1" type="text" value="" /> <input type="button" value="決定" onclick="onButtonClick();" /> </form> これを流用して、決定ボタンを押した時にテキストボックス内の数値をvar num = 50;の所に取得して表示する項目を変えられるようにしたいのですが

関連するQ&A

  • JavaScriptでフォームの入力項目をリアルタイムでチェックする「

    JavaScriptでフォームの入力項目をリアルタイムでチェックする「jQuery Form Validators」で全角カナや半角数字のみを入力できるようにすることはできますか? (参考にしたサイト) http://www.skuare.net/test/jvalidator.html フォームの入力項目で以下の入力のチェックが出来るようにしたいのですが可能でしょうか? ・全角カタカナのみで姓名の入力 ・半角数字のみで電話番号の入力 メールアドレスは、inputタグのサンプルにある部分をコピーすることで出来ました。 --------------------------------------- validExpress="[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?" --------------------------------------- validExpress=""の""の中を指定すれば良いのだと思うのですがどうしても解決せず、この場で質問させて頂いてます。 どうかご教授の程、宜しくお願い致します。

  • 指定範囲したセルに含まれる数字が何個あるか調べる方法

    指定範囲したセルに含まれる数字が何個あるか調べる方法 (C1:E4)の範囲に 123 234 012 234 345 123 345 456 234 456 567 345 とあるとします。 この(C1:E4)の範囲のセルに "1"を含むセルが何個あるかをA1に表示させる(例だとA1に3と表示)にはどうしたらいいでしょうか? また、(C1:E4)の範囲に"23"を含むセルが何個あるかをA2に表示させる(例だとA2に5と表示)、 (C1:E4)の範囲に"2"と"4"を含むセルが何個あるかをA3に表示させる(例だとA3に3と表示)、 といった方法はありますでしょうか? また、(C1:E4)で範囲を固定するのでなく、 あるActiveCellから(4:3)の範囲のセルで上記のようなこと行うことは出来ますか? 例だと ActiveCellがC1とすると そこから(4:3)の範囲で(C1:E4)を指定 ActiveCellから(0,-2)の位置がA1 ActiveCellから(1,-2)の位置がA2 ActiveCellから(2,-2)の位置がA3 これが、 ActiveCellがE6になったとすると 範囲で(E6:G9)を指定 ActiveCellから(0,-2)の位置がC6 ActiveCellから(1,-2)の位置がC7 ActiveCellから(2,-2)の位置がC8 といった感じで出来るのでしょうか? 是非ともよろしくお願いします。

  • 先ほど質問したものです。 VLOOKとIF関数の合体バージョンは可能ですか?

    先ほど、 1  1~10  A 2 11~20  B 3 21~30  C 4 31~40  D    : ★「C1セルには数字を入れます。その数字が8ならば、8は1~10の中の数字なので、D1のセルにAと表示される。15ならばBと入力したいです。 と質問し、 ↓ A列の数値を 1 11 21 31 : 191 のように入力しなおします。 D列の関数は  =VLOOKUP(C1,$A$1:$B$20,2) とお答えをいただいた者です。 更に、計算させたいことが出来てしまいました。 1~10の数字が入力された場合に表示させる文字が「A」から400に。11~20の数字が入力された場合に表示させる文字が300になりました。 1  1~10  400 2 11~20  300 3 21~30  C 4 31~40  D C1セルに、25と入力された場合はD1セルにCと表示。 これは教えていただきましたが、 もし、5と入力した場合、D1のセルには400と表示されますが、表示される項目が1~10の中の数字だった場合、5%を掛けたいのですが、出来ますでしょうか? 教えていただいた関数=VLOOKUP(C1,$A$1:$B$20,2)で、400と表示されますが、1~10までの数字を入力した場合のみ、400×5%で「20」と表示させたいのです。 よろしくお願いします。

  • エクセル2007関数

         A   B    C     D E 1   15  20  300 2   21  22  400 3   34  31  452 D1に、A列の数字のいずれかを入力すると、 E1に、A列のいずれかの数字を入力した行のC列の数字を表示させたい。 たとえば、 D1に、21と入れると、E1に400と D1に、34と入れると、E1に452と 表示させたいのですが、 関数は、ありますでしょうか?

  • javascript計算についての質問

    単位の計算でSなら4、Aなら3、Bなら2、Cなら1、D、Fなら0で、それぞれ取得した単位数を入力したら平均を求めるjavascriptを作りたいのですがどのようにすればいいのかわかりません どなたかご教授ください。 たとえばSのところに4を入力してBのところに3を入力したなら、平均のところに3を出力するみたいな <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>QPA</title> <script language="JavaScript" type="text/javascript"> <!-- function calc(theForm) // 小数点以下を切り捨てる theForm.result.value = Math.floor(resultVal); } } //--> </script> </head> <body bgcolor="#ffffff"> <h2>指定したQPAを足した平均</h2> 全体の平均=(Sの総得点+Aの総得点+Bの総得点+Cの総得点+Dの総得点+Eの総得点+Fの総得点)/(Sの総単位数+Aの総単位数+Bの総単位数+Cの総単位数+Dの総単位数+Eの総単位数+Fの総単位数) <form name="myForm"><p> </p></form>

  • 文字を削除して合計 Excel2007

    Excelで数字を含む文字列から数字のみを取り出し、合計する方法を考えているのですが、わかりません。  |..A..|..B..|..C.|..D.| .2|50%|30%|20%|10%| という風にセルに記入している場合、E2に全体としての割合を表す関数を作りたいと思っています。 とりあえず各セルから%を除いて数字のみを表示する関数を作りました。 =LEFT(A2,LEN(A2)-1) 例はデータが少ないのですが、実際は多数のデータを使うつもりなので、全ての値を足すのでなく、 指定した範囲内の値を合計するようにしたいと思っています。 作業列を使えばできるかもしれませんが、使わない方向でやりたいので、宜しくお願いします。 ちなみに、各割合は、別のシートから=で値を入力しています。

  • エクセルのマクロ(VBA)について質問です。

    お世話になります。 エクセルのマクロ(VBA)について質問があります。 下記、わかりにくいと存じますが、お力添え下さい。 ある表があります。 項目としてA列「名前」B列「連絡先」C列「順番」とんでE列に 「乱数」があります。 2行目にこれら項目名が並んでおり、3行目から34行目までは データ入力範囲になります(32名入力出来る。1行目は表のタイトルです) 入力したデータを順不同に並べたく、「順番」項目は乱数を用いた数字を入力させます。 ここから、マクロの登録をします。 ~↓登録中↓~ ・「乱数」項目の1番上(E3)から一番下(E34)までドラッグ  (範囲指定)し、右クリック→コピー ・「順番」項目の一番上(C3)で右クリック→”形式を選択して貼り付け” ”値”にチェックを付けて「OK」 ☆「順番」項目の一番上(C3)から「名前」項目の一番下(A34)まで ドラッグ(範囲指定)し、”昇順で並べ替え”ボタンを押す ~ここまで~ (乱数は、毎回変化してしまうのを防ぐ為、別項目から引っ張ってきて 値だけをコピーするようにしています) このようにマクロを登録しました。 しかし、毎回32名を入力するわけではなく、時には32名未満の入力をする場合があります。 別のセルF40に、COUNTA関数より取った「名前」項目に登録されている数を表示させているのですが、 ☆部分の処理にてこの数だけ範囲指定して並べ替えたいのです。 (セルC3から登録されている人数分だけ範囲指定したい、ということです。20名だけ登録されていれば、 セルC3からセルA22を範囲指定する。指定した部分だけを並べ替える) 32名未満の時、乱数に元づく順番で並べ替える際、データの入って いない行も順番に並んでしまうのですが、空白の行はそのままにし、 データの入っている行だけを上(セルA3)から詰めて並べたいのです。 VBAの編集で、COUNTA関数の結果の数字を変数に代入して使用したいのですが、 そのやり方がわかりません。 どなたかお知恵をくださいますよう、お願い致します。 (わかりにくい記述なので、必要に応じて補足させて頂きます。)

  • javascriptのmatchで質問です。

    javascriptで入力された文字列の中から、指定した文字の前後の文字がアルファベッド、数字、ひらがな、空白かを判断するものを作成しています。 matchを使って作成を行っているのですが、なかなかうまくいっていないのが現状です。 どなたか知恵をお貸しいただけないでしょうか。 よろしくお願いします。 例 指定文字:1 入力:ABCD1EF 出力:アルファベッドです。 指定文字:う 入力:あいうえお 出力:ひらがなです。 指定文字:あ 入力:あいうえお 出力:前が空白で後ろがひらがなです。 という形にしたいです。

  • エクセル2003 表示の方法

    どうぞ宜しくお願いします 入力内容は、 1Eに2桁までの数字(0.1~99.9)、 1Fに4桁までの数字(1~9999)、 1Gに4桁までの数字(1~9999)、を入力します 1Hには、A~Dの英文字 ◆例を書きますので宜しくお願い思案す 1Eに、9と入力   1Fに、456と入力   1Gに、789と入力 1Hに、Aと入力しますと  1Bには、09と 1Cには、0456と 1Dには、0789と表示され 1Aには、0904560789Aと表示され 1Hには、09-0456-0789-Aと表示されるようにしたいのです pcあまり詳しくありません どうぞ宜しくお願いします

  • Javascriptでフォーム項目を変化させたい

    タイトル通りなのですが、Javascriptを利用して『入力するフォーム項目を変化させたい』と考えています。 参考になるページを探そうと思い検索しても、javascriptを勉強しはじめて間もない私が読めるようなページにHITしなくて(検索のワード選定が出来てないかもしれませんが…)困っています。 今回したいことは、 A・B・Cというラジオボタン(チェックボックス)があり、 <input type="radio" name="select" value="patarn_a">A <input type="radio" name="select" value="patarn_b">B <input type="radio" name="select" value="patarn_c">C Aにチェックを入れるとAに対応する入力項目(例えば項目1・項目2・項目3)が記入できるようになり、Bにチェックを入れると、Bに対応する入力項目(例えば項目1・項目3・項目4)が記入できるようになり、Cにチェックを入れると、Cに対応する入力項目(例えば項目2・項目5・項目6)が記入できるようにしたい、のです。 で、送信ボタンを押した時にA・B・Cのどこにチェックが入っているのか、それからその対応項目に入力された値をデータとして送りたいのですが、どうにも方法が分かりません。 もし、お手すきの方がいらっしゃいましたら、どなたかご教授頂けないでしょうか?

専門家に質問してみよう