avascriptでテキストボックスを追加したいのです。テーブルを組んで複数のnamaの違うボックスを追加したいです。
下記のようにイメージして書いたのですが、考えが詰まりました。
テーブルでなくても、2列複数行の形になればいいんですが・・・
教えて下さい。よろしくお願いします。
<script type="text/javascript">
<!--
var tag_num = 4;
function myAdd(){
var oTag = document.createElement("input");
oTag.setAttribute("type", "text");
oTag.setAttribute("name", "hoge" + tag_num++);
oTag.setAttribute("name", "fuga" + tag_num++);
var oDiv = document.getElementById("area");
oDiv.appendChild(oTag);
}
-->
</script>
</head>
<body>
<form id="form1" action="check.php" method="post">
<span id="area">
<table style="text-align: left; width: 100px;" border="1"
cellpadding="2" cellspacing="2">
<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>
</span>
<input type="button" value="Add" onClick="myAdd()">
</form>
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>
ご返答ありがとうございます。
おっしゃるとおりの状況で恥ずかしいともに心が痛いです。
まだプログラマとしては初心者でこれからも勉強していきたいです。
ありがとうございました。
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>
この回答への補足
ありがとうございます。
動きました。あと15個になると追加するボタンをdisableにしようと思っていたんですが、if文で制御してelseでdisableを仕込もうとしたのですが、うまくいきません。
一つ解決したらまた問題発生します。JavaScriptって難しいですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Formのシリアライズができない
-
Javascriptの電卓で最初の何も...
-
VBSでの自動ログイン
-
既存のJSコードをHTMLサンプル...
-
ラジオボタンが選択されたらテ...
-
javascriptで表(テーブル)の自...
-
javascriptでログインページの作成
-
複数のselect値で1つも選択され...
-
return trueとreturn falseの用...
-
プルダウン 項目が多いので先頭...
-
【jQuery】input nameの文字列...
-
チェックボックスのON/OFFでVal...
-
特定<table>内の<td>の色を変える
-
3桁区切りのカンマをつけたい...
-
追加ボタンを押した際に ok ボ...
-
javascriptのちょっとした動作...
-
hiddenのvalueの値を変えたい
-
javaScriptの変数をJavaの変数...
-
Javascriptでのbuttonのname属...
-
jqueryでtextareaのcols、rows...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JavaScriptの「.querySelectorA...
-
複数のselect値で1つも選択され...
-
チェックボックス付きのテーブ...
-
ラジオボタンが選択されたらテ...
-
入力チェックの外部スクリプト...
-
Javascriptの電卓で最初の何も...
-
文字数を数える際に空白、改行...
-
画面の2重起動をチェックする...
-
画面表示とともにtableの指定の...
-
jQueryで合計を出したい
-
localStorageでのcheckbox制御
-
JavaScriptによる自動計算フォーム
-
同一nameの input type="text"...
-
テーブル内のチェックボックス...
-
formで項目を連結したい
-
クリックしたラジオボタンの行...
-
Javascriptで自動計算の合計の...
-
ラジオボタンを一括で操作する...
-
送信ボタン連打を抑止したいです
-
ボタン押下すると一行テキスト...
おすすめ情報