• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:任意のフォーム名・部品名に対応したいのですが・・・)

任意のフォーム名・部品名に対応したいのですが・・・

このQ&Aのポイント
  • 任意のフォーム名やテキストボックス名に対応する方法を教えてください。
  • カラーパレットのPHPを作成し、親ウィンドウのテキストボックスにカラー値を引き渡す方法について教えてください。
  • フォーム名とテキストボックス名を任意に指定できるように、JavaScriptの部分を書き換えたいです。

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

  • ベストアンサー
noname#199778
noname#199778
回答No.2

JavaScriptでは、formやその部品などは、それぞれforms、elementsという配列として取得されていると思います。 これらの配列を利用すれば、良いと思いますよ。 function set_color(form_name, txt_name, color){ window.opener.document.forms[form_name].elements[txt_name].value = color; } というように引けば、動作してくれると思います。 forms配列やelements配列の要素を特定する項目としては、HTMLの記述順にソートされる番号の他、name属性を設定してある部品については、そのname属性をキーにして連想配列のように部品を特定することも可能です。 ご質問のケースでは、formやinputにつけたnameの値を引数として渡してやるのが、判りやすくてよいと思います。 参考まで。

kazu28
質問者

お礼

lead1976さん解答ありがとうございます。 forms配列とelements配列を使うことによって、正常に動作しました。 配列の添え字も、アドバイスに従いネーム属性の値を使うことにしました。 今後のメンテナンスを考えると、断然間違いがすくなくなりますしね・・・ この方法、他の入力補助にもどんどん使えそうなので重宝します。 ありがとうございました。

その他の回答 (1)

  • the845t
  • ベストアンサー率33% (246/743)
回答No.1

質問の解としては、 window.opener.document.form_name.txt_name.value = color; で良いのですが・・・・。 これだけだとform_nameやtxt_nameをどうやってウィンドウに伝えるかその部分が欠落してますが、 そこは大丈夫ですか?

kazu28
質問者

補足

the845tさん、解答ありがとうございます。 私が試した限りでは、 window.opener.document.form_name.txt_name.value = color; のように、ただ単に変数を入れるだけではうまくいきませんでした。 変数の受け渡しが不完全なのかと思い、試しに function set_color(color) { var form_name = 'form1'; var txt_name = 'name_color'; window.opener.document.form_name.txt_name.value = color; } を実行しましたが、うまく動作しません。 それと実際のコードでは function set_color(form_name, txt_name, color) { window.opener.document.form_name.txt_name.value = color; window.close(); } となっているのですが、上記のように変数を使うと window.close(); が実行されません。 window.opener.document.form_name.txt_name.value = color; の行でエラーが発生した為window.close();が実行されないと考えていたのですが、ちがうでしょうか? よろしくお願いします。

関連するQ&A