
No.4ベストアンサー
- 回答日時:
ちょっと長いけど新しいブラウザならおおむね動きそうなサンプル。
送信するとなると name が重要だけど、どうするかわからなかったので適当に処理。
<html>
<head>
<title>テーブルの編集・送信</title>
<script type="text/javascript">
<!--
function formCancel(buttonObj,tableId) {
buttonObj.value="→編集モード";
buttonObj.onclick=function(){return formActive(this,tableId)};
buttonObj.parentNode.removeChild(buttonObj.previousSibling);
var oTbl = document.getElementById(tableId);
var oTbod = oTbl.tBodies[0];
for(var i=0;i<oTbod.rows.length;i++){
oCell = oTbod.rows[i].cells[1];
var Text = oCell.firstChild.defaultValue;
oCell.replaceChild(document.createTextNode(Text),oCell.firstChild);
}
return true;
}
function formActive(buttonObj,tableId) {
var oTbl = document.getElementById(tableId);
if(! oTbl) {
alert('動作対象のブラウザではありません。');
return false;
}
buttonObj.value="キャンセル";
buttonObj.onclick=function(){return formCancel(this,tableId)};
newSubmit = document.createElement('input');
newSubmit.type="submit";
newSubmit.value="送信する";
buttonObj.parentNode.insertBefore(newSubmit,buttonObj);
var oTbod = oTbl.tBodies[0];
for(var i=0;i<oTbod.rows.length;i++){
oCell = oTbod.rows[i].cells[1];
var Text = oCell.firstChild.nodeValue;
newInput = document.createElement('input');
newInput.type = 'text';
// nameはセルのタイトルから設定。
newInput.name =oCell.title;
// 幅の値は適当に変更して。
newInput.size = 5;
newInput.value = Text;
newInput.defaultValue = Text;
oCell.replaceChild(newInput,oCell.firstChild);
}
return false;
}
//-->
</script>
</head>
<body>
<form action="" method="get">
<table border id="dataTable">
<thead><tr><th>項目名</th><th>値</th></tr></thead>
<tbody>
<tr><td>ID</td><td title="id">123</td></tr>
<tr><td>名前</td><td title="name">unknown</td></tr>
<tr><td>その他</td><td title="other">abc</td></tr>
</tbody>
<tbody>
<tr><td colspan=2><input type="reset" value="→編集モード"
onclick="return formActive(this,'dataTable')">
</td></tr>
</tbody>
</table>
</form>
</body>
</html>
No.3
- 回答日時:
disabledかreadonlyに設定した入力フィールドの属性を変更するだけの方がテキスト→入力フィールドに変更するより簡単そうですね。
ところでBLUEPIXYさんのおっしゃるとおり、編集可能に変更するだけでは意味がなさそうなんですが編集可能に変更した後、CGIかなにかにフォームとして送信するんでしょうか?
この回答への補足
皆様ありがとうございます。
編集可能にしたあと、フォームとして送信したいです。
教えて頂いた方法では送信はできないんですね?
送信するにはどうすればよいのでしょうか?
こちらでもいろいろ調べてはいるのですが・・
よろしくお願いします。
No.2
- 回答日時:
サンプルを作ってみました。
IEで動作します。(他では動作しません)というか、編集できたとしても、保存できないからあまり意味が無いように思いますが・
---------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=SHIFT_JIS">
<title>テーブルの中身の変更</title>
<script type="text/javascript">
<!--
function edit(td){
td.innerHTML="<input type='text' value='"+td.innerText+"' onblur='restore(this)'>";
}
function restore(inp){
inp.outerText=inp.value;
}
//-->
</script>
</head>
<body>
値の列をダブルクリックして値を変更できます。<br>
変更が終わったら、セルの外をクリックして下さい<br>
<table border="1" cellspacing="0">
<col align="center"><col align="right" style="width:3em">
<tr><th>項目名</th><th align="center">値</th></tr>
<tr><td>A</td><td ondblclick="edit(this)">123</td></tr>
<tr><td>B</td><td ondblclick="edit(this)">789</td></tr>
</table>
</body>
</html>
No.1
- 回答日時:
TDタグのinnerHTMLを書き換えてあげればできると思います。
--サンプル--
<table>
<tr><td id="td1">TEST</td><td><input type="button" onclick="change('td1');" value="編集"></tr>
</table>
function change(id){
var e = document.getElementById(id);
var v = e.innerHTML;
e.innerHTML = "<input type=\"text\" value=\"" + v + "\">";
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- JavaScript HTML&CSS Javascriptによる動的テーブル 1 2023/03/27 19:51
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Access(アクセス) Accessフォームで複数条件でフィールドの値を表示する方法 4 2022/07/21 10:47
- JavaScript javaScriptで画面に値を入れるには 1 2022/08/14 12:27
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
formのtextフィールドが認識さ...
-
Formのシリアライズができない
-
チェックボックスがIE8で正し...
-
▲▲JavaScriptに詳しい人見てく...
-
JavaScriptの「.querySelectorA...
-
VBSでの自動ログイン
-
画面表示とともにtableの指定の...
-
クリックしたラジオボタンの行...
-
クリックした行の背景色の変更
-
BBSのアイコンをプルダウンメニ...
-
画面の2重起動をチェックする...
-
ラジオボタンが選択されたらテ...
-
インラインフレームを利用した...
-
変数に入っているのに、メール...
-
JSPとJavaScriptの連携について...
-
javascriptで文字を拡大・縮小...
-
onchangeイベントを強制的に発...
-
新しくフォルダを作成したい
-
同じ名前のセレクトがある場合...
-
リストボックスに動的な初期設...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
チェックボックス付きのテーブ...
-
画面表示とともにtableの指定の...
-
JavaScriptの「.querySelectorA...
-
Javascriptの電卓で最初の何も...
-
複数のselect値で1つも選択され...
-
ボタンクリックでフォーカス移動
-
テーブル内のチェックボックス...
-
クリックした行の背景色の変更
-
jQueryで合計を出したい
-
文字数を数える際に空白、改行...
-
インラインフレームを利用した...
-
ラジオボタンを一括で操作する...
-
画面の2重起動をチェックする...
-
メールフォームについて
-
.NETを使用せずに、ASP・VBScri...
-
SCRIPT及びソースを教え...
-
同一nameの input type="text"...
-
テーブルの一部を入力フィール...
-
フォームの入力チェック方法
-
localStorageでのcheckbox制御
おすすめ情報