javascript DOM で、ノード属性値変更についてですが。


以下のような<table>があり、<tr>配下の<input type="hidden">のvalue属性値を空にしたいのです。
<table>
<thaed>
 <tr><td>No.</td><td>タイトル</td></tr>
<tbody id="p2146-tbody"><tr><td>1</td><input type="hidden" name="ids[]" value="123" /><td><input type="text" name="chapts[]" size="20" value="" /></td><tr>
<tr><td>1</td><input type="hidden" name="ids[]" value="124" /><td><input type="text" name="chapts[]" size="20" value="" /></td><tr>
<tr><td>1</td><input type="hidden" name="ids[]" value="125" /><td><input type="text" name="chapts[]" size="20" value="" /></td><tr>
</tbody>
</table>
上から三番目の<tr>の子ノード<input type="hidden" name="ids[]" value="125" />のvalue値を
value="" に変化させたいのです。

firefoxでは、以下のスクリプトで変化させれましたが、IEではダメでした。
function chgValue() {
 var tbody = document.getElementById("p0518-tbody");
 var list = tbody.childNodes[2];
 var input = list.childNodes[0];
 input.value = "222";
 return false;
}
IEでは、値が変わりません。
どのようにノードを取得したらよいのでしょうか?

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:
  • 終了:2012/06/01 18:31:05
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:Cherenkov No.1

回答回数1504ベストアンサー獲得回数493

ポイント200pt
var ids = document.getElementsByName('ids[]');
ids[2].value = '';

http://q.hatena.ne.jp/answer

他13件のコメントを見る
id:Cherenkov

毎回getElementByIdでtbodyを探さずに、onclick="addList(this)" のthisを基点に探したほうが賢い。
childNodesで辿らずに、thisを基点に探したほうが賢い。
と思います。

2012/06/01 16:28:40
id:gdwtseq

度々ご返信いただきありがとうございます。
また、なかなか返答ができず、すみません。

https://gist.github.com/2849594
でご提示いただいたコードで、IE8 & Firefox3.6 で正常に動くことを
確認しました。期待した動きでした。
ありがとうございます。

また、それに関連したアドバイス・ご指導をいただきまして大変勉強になりました。
本当にありがとうございました。

2012/06/01 18:30:38
  • id:gdwtseq
    自レスです、すみません。

    関数内の
    input.value = "222";は、
    input.value = "";  の間違えです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません