• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テーブル上のチェックボックスにチェックがされない)

テーブル上のチェックボックスにチェックがされない

このQ&Aのポイント
  • データベースからメール送信履歴を検索し、結果をリスト表示しようとしています。
  • Ajax通信をして結果をJsonで受け取っています。
  • 送ったか否かは「sendF」に書かれており、「0」なら未送信、「1」なら送信済みです。

質問者が選んだベストアンサー

  • ベストアンサー
  • itu1989
  • ベストアンサー率44% (37/83)
回答No.2

あまりAjaxやJSONの事は知りませんが、obj.innerHTMLでHTMLの内容を設定する前に「$('#sendF[' + i + ']').prop('checked', true);」を行っているからではないでしょうか?document上に出力されていないobjectには値は設定できません。 出力・設定の順番を変えれば設定はできると思います ただ、今のままだと判定に使っている「json[i].sendF」をTABLE要素構成完了後に確認する為に再度ループしてチェックしなければいけません (1)ループで行数分<tr>~</tr>を構成 (2)obj.innerHTMLに出力 (3)再度ループを回して「json[i].sendF」を確認し1なら「$('#sendF[' + i + ']').prop('checked', true);」を実行 となります。 2回ループを回すのは勿体無い!と思います。 なので素直にTABLE要素構成中に「json[i].sendF == 1」を発見したらcheckedを設定する事にしてはいかがでしょうか? res += '<tr>' + '<td style="text-align: center;">' + json[i].personId + '</td>' + '<td style="text-align: center;">' + json[i].personName + '</td>' + '<td style="text-align: center;">'; if(json[i].sendF == 1){ res += '<input type="checkbox" id="sendF[' + i + ']" name="sendF" checked />'; } else { res += '<input type="checkbox" id="sendF[' + i + ']" name="sendF" />'; } res += '</td >' + '<td style="text-align: left;>' +'<input type="text" id="memo" name="memo" value="' + json[i].memo + '" />' + '</td >' + '</tr>';

panasobi
質問者

お礼

素早い回答大変ありがとうございました。 確かに、まだ出力する前にそのオブジェクトの値を触ろうとしても 無理ですね。 教えて頂いた通り、テーブルの中に判断を入れたら うまくいきました。 具体的な例まで書いて頂き、本当にありがとうございました。

その他の回答 (1)

  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.1

sendF[?] の要素を DOM に入る前に操作しているため、対象がなくて処理が無視されています 直すなら、innerHTML の後に操作するか、最初から res に checked を埋め込むかでしょう

panasobi
質問者

お礼

おっしゃる通り、出力する前のオブジェクトに触ろうとしても 無理ですね。 素早い回答ありがとうございました。

関連するQ&A