• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ボタンを押してテキストボックスを追加しテーブルの作成)

JavaScriptでテキストボックスを追加する方法

このQ&Aのポイント
  • JavaScriptを使用して、テキストボックスを追加する方法について教えてください。
  • テーブルを組んだ形で複数の異なる名前のテキストボックスを追加したいです。
  • イメージとしては、2列複数行の形になれば良いです。具体的な実装方法を教えてください。

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

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

>一つ解決したらまた問題発生します。 それはなんとなく書いているからですね。 きちんと設計すれば思ったとおりにしか動かないのがプログラムです。 今回の件は、自分自身をオブジェクトでわたしてやればよいでしょう。 <script> function myAdd(obj){ var max=5; var c=count("hoge"); if(c>=max) return false; var oTR=document.createElement("tr"); var names=["hoge","fuga"]; for(var i in names){ var oTD = document.createElement("td"); var oTag = document.createElement("input"); oTag.setAttribute("type", "text"); oTag.setAttribute("name", names[i] + (c+1).toString()); oTD.appendChild(oTag); oTR.appendChild(oTD); } document.getElementById("t0").getElementsByTagName("tbody")[0].appendChild(oTR); if(c>=max-1) obj.disabled=true; } function count(name){ var tags=document.getElementsByTagName("input"); var c=0; var reg=RegExp("^"+name+"[0-9]+$"); for(var i=0;i<tags.length;i++){ if(tags[i].name.match(reg)){ c++; } } return c; } </script> </head> <body> <form> <table id="t0" border> <tbody> <tr> <td><input type="text" name="hoge1" value=""></td> <td><input type="text" name="fuga1" value=""></td> </tr> <tr> <td><input type="text" name="hoge2" value=""></td> <td><input type="text" name="fuga2" value=""></td> </tr> <tr> <td><input type="text" name="hoge3" value=""></td> <td><input type="text" name="fuga3" value=""></td> </tr> </tbody> </table> <input type="button" value="Add" onClick="myAdd(this)"> </form>

eccschool
質問者

お礼

ご返答ありがとうございます。 おっしゃるとおりの状況で恥ずかしいともに心が痛いです。 まだプログラマとしては初心者でこれからも勉強していきたいです。 ありがとうございました。

その他の回答 (1)

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

ざっとこんな感じで処理してみては? <script type="text/javascript"> function myAdd(){ var oTR=document.createElement("tr"); var c=count("hoge"); var names=["hoge","fuga"]; for(var i in names){ var oTD = document.createElement("td"); var oTag = document.createElement("input"); oTag.setAttribute("type", "text"); oTag.setAttribute("name", names[i] + (c+1).toString()); oTD.appendChild(oTag); oTR.appendChild(oTD); } document.getElementById("t0").getElementsByTagName("tbody")[0].appendChild(oTR); } function count(name){ var tags=document.getElementsByTagName("input"); var c=0; var reg=RegExp("^"+name+"[0-9]+$"); for(var i=0;i<tags.length;i++){ if(tags[i].name.match(reg)){ c++; } } return c; } </script> </head> <body> <form> <table id="t0" border> <tbody> <tr> <td><input type="text" name="hoge1" value=""></td> <td><input type="text" name="fuga1" value=""></td> </tr> <tr> <td><input type="text" name="hoge2" value=""></td> <td><input type="text" name="fuga2" value=""></td> </tr> <tr> <td><input type="text" name="hoge3" value=""></td> <td><input type="text" name="fuga3" value=""></td> </tr> </tbody> </table> <input type="button" value="Add" onClick="myAdd()"> </form>

eccschool
質問者

お礼

ありがとうございました。 あとテキストエリアも加えたりしています。 あーJavaScriptって難しいですね。

eccschool
質問者

補足

ありがとうございます。 動きました。あと15個になると追加するボタンをdisableにしようと思っていたんですが、if文で制御してelseでdisableを仕込もうとしたのですが、うまくいきません。 一つ解決したらまた問題発生します。JavaScriptって難しいですね。

関連するQ&A