- ベストアンサー
任意のフォーム名・部品名に対応したいのですが・・・
- 任意のフォーム名やテキストボックス名に対応する方法を教えてください。
- カラーパレットのPHPを作成し、親ウィンドウのテキストボックスにカラー値を引き渡す方法について教えてください。
- フォーム名とテキストボックス名を任意に指定できるように、JavaScriptの部分を書き換えたいです。
- みんなの回答 (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の値を引数として渡してやるのが、判りやすくてよいと思います。 参考まで。
その他の回答 (1)
- the845t
- ベストアンサー率33% (246/743)
質問の解としては、 window.opener.document.form_name.txt_name.value = color; で良いのですが・・・・。 これだけだとform_nameやtxt_nameをどうやってウィンドウに伝えるかその部分が欠落してますが、 そこは大丈夫ですか?
補足
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();が実行されないと考えていたのですが、ちがうでしょうか? よろしくお願いします。
お礼
lead1976さん解答ありがとうございます。 forms配列とelements配列を使うことによって、正常に動作しました。 配列の添え字も、アドバイスに従いネーム属性の値を使うことにしました。 今後のメンテナンスを考えると、断然間違いがすくなくなりますしね・・・ この方法、他の入力補助にもどんどん使えそうなので重宝します。 ありがとうございました。