2016-04-27 3 views
-1

名前属性をJavaScriptで動的に変更したいのですが、element.nameまたはsetAttribute()メソッドを使用してname属性を変更できませんでした。 name属性を設定する他の方法はありますか?名前属性がjavascriptを使用して設定できませんでしたか?

var status_Element = document.getElementsByName("BD_task_status_"+old_id+"[]"); 
var final_status_Element = document.getElementsByName("BD_final_task_status_"+old_id+"[]");       
for(var in_count=0;in_count<status_Element.length;in_count++) 
{     
    status_Element[in_count].name="BD_task_status_level"+inner_count+"[]"; 
    final_status_Element[in_count].name="BD_final_task_status_level"+inner_count+"[]"; 
} 
+4

あなたの質問を求めていた、大きなオレンジがあった**有用な情報をテキストエリアの右側にある**ボックスをフォーマットする方法その中に。また、書式設定支援ツールバー全体がありました。 ** [?] **ボタンを押すと書式設定のヘルプが表示されます。 *また、テキストエリアと投稿の投稿ボタンの間にあるプレビューエリア(ボタンを見つけるために過去のものをスキャンする必要があるように)は、あなたの投稿が投稿時にどのように表示されるかを示します。あなたの投稿をはっきりさせ、時間を割いていることを実証することで、良い答えを得る機会が増えます。 –

+0

コードを読めるようにしてください。 – Bergi

+0

[name属性を設定するためにJavaScriptを使用できますか?](http://stackoverflow.com/questions/1362513/can-i-use-javascript-to-set-the-name-attribute) –

答えて

4

inner_countin_countタイプミス以外の)動作しますあなたの例のようにnameプロパティを設定します。問題は、getElementsByNameライブ要素のコレクションを返すことです。インデックス0の要素の名前を変更すると、もはやコレクションに属さなくなり、コレクションによって削除されます。以前はインデックス1にあった要素はインデックス0になりましたが、その間にはin_countが増えてしまい、その要素を変更することはありません。それらの半分は変更されなくなります。

次のいずれかのコレクションを後方

  1. ループの代わりに名前(それ以来消え要素が端にあり、あなたが気にしない)、または

  2. 使用querySelectorAllを変更するにはこれはスナップショットコレクションを提供します(ライブではありません)。 (querySelectorAllもIE8すべての最新ブラウザでサポートされており、。)

+0

@ T.J.Crowder。変更された要素がコレクションに存在しなくなった場合、変更された要素は新しい名前を持つ必要があります。しかし、ここで変更は起こり得ません。 – sakthikumar

+0

@sakthikumar:*その要素の名前は変更されますが、その次はスキップします。 ** **変更が何も起こっていない場合は、ウェブコンソールに何が間違っているかを示すエラーがあります(例えば、 'inner_count'と 'in_count'のようなもの)。 –

+0

Thnq T.J.Crowder。それはうまく動作します。 – sakthikumar

関連する問題