• 締切済み

テーブルセル内のinput要素のnameを変更

お世話になります。 「 var cloneTable = this.DataTable.cloneNode(true); 」 JavaScriptにて上記のようなコードでテーブルをコピーする必要があるのですが、 コピーするテーブル(DataTable)のセル内にはテキストボックスやプルダウンが入っています。 ただ単にコピーしてしまうと同一のnameやidのinput要素が出来てしまいます。 これを避けたいので、コピーしたテーブル「cloneTable」のname,id属性を別のものに変更し(何でもいい) 同一の名前になることをなんとか回避しようと考えたのですが、なかなかうまくいきません。。 そのようなことは可能なのでしょうか。 お手数ですがご教示いただけますでしょうか

みんなの回答

  • stuff_ppo
  • ベストアンサー率62% (27/43)
回答No.3

jQueryの導入に問題がなければ、 var cloneTable = $('dataTableContainer').children(':first').clone()     .attr('id', 'dataTable' + i)     .attr('name', 'n_dataTable' + i)[0] などと簡単に記述できます。 ブラウザ間のJavaScriptの実装の相違を気にしなくてよくなりますし、 DOM要素の取り回しが非常に楽になりますので、 jQueryの導入は非常におすすめですよ。

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

試してみるか、テキストノードに name=" とかがない前提 var cloneTable = document.createElement("table"); var str = this.DataTable.innerHTML; var reg1 = /(.*)(\sname\s*=\s*".+?)(\s*".*)/gim; var reg2 = /(.*)(\sid\s*=\s*".+?)+?(\s*".*)/gim; var newstr = str.replace(reg1,"$1"+"$2"+"-cpy"+"$3"); newstr = newstr.replace(reg2,"$1"+"$2"+"-cpy"+"$3"); cloneTable.innerHTML = newstr;

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

var str = cloneTable.innerHTML; で内部HTMLを文字列取得して、正規表現を使ったリプレースで、 name="xxx" id="xxx" を name="xxx-2" id="xxx-2" に一括変更して cloneTable.innerHTML = str; でごそっと入れ替える。 ※イベントハンドラーとか、思いっきり問題ありそうだけど、、、

関連するQ&A