いくつか不明瞭な点があるため、憶測で回答することをご了承ください。
【前提条件】
(1)シャンプーとトリートメントでフォームを分け、前者をform1、後者をform2としている。
(2)form1用の外部スクリプトform1.jsと、form2用の外部スクリプトform2.jsを用意している。
(3)form1.jsとform2.jsで同じ名前の関数を定義している。
上記のような状況だと仮定して話を進めます。
この前提条件に誤りがあるときは指摘してください。
【問題点】
その前提に基づいて貼られていない部分を補完すると、souce1のようになるかと思います。
(source1)_______________________________
<FORM id="form1" ... >
...
<SCRIPT language="JavaScript" src="script/form1.js"></SCRIPT></FORM>
<FORM id="form2" ... >
...
<SCRIPT language="JavaScript" src="script/form2.js"></SCRIPT></FORM>
________________________________________
このようにしてスクリプトを切り替えているつもりとお見受けしました。
結論から言うと、そんなことはできません。
なぜならsource1は、source2やsource3とほぼ等価であるからです。
(source2)_______________________________
<SCRIPT language="JavaScript" src="script/form1.js"></SCRIPT>
<SCRIPT language="JavaScript" src="script/form2.js"></SCRIPT>
<FORM id="form1" ...> ... </FORM>
<FORM id="form2" ...> ... </FORM>
________________________________________
(source3)_______________________________
<SCRIPT language="JavaScript">
function setvalue( ... ) {
frm = document.getElementById("form1");
...
}
function checkform(form1) {
frm = document.getElementById("form1");
...
</SCRIPT>
<SCRIPT language="JavaScript">
function setvalue( ... ) {
frm = document.getElementById("form2");
...
function checkform(form2) {
frm = document.getElementById("form2");
...
</SCRIPT>
<FORM id="form1"> ... </FORM>
<FORM id="form2"> ... </FORM>
________________________________________
関数setvalue()とcheckform()が二度定義されているのがお分かりでしょうか。
これでは先に定義してあるシャンプー(form1)用の関数が呼ばれることはありません。
【対策】
対策方法ですが、2つ考えられます。
(a)関数名を付け直す。
ページ内でユニークな(『一意の』とも言います)名前を付ける。
この方式ではフォームが増えるに従って関数も増えることになり、後々のメンテナンスが大変です。
(source4)_______________________________
<SCRIPT language="JavaScript">
function setvalue1( ... ) {
frm = document.getElementById("form1");
...
}
function checkform1() {
frm = document.getElementById("form1");
...
}
function setvalue2( ... ) {
frm = document.getElementById("form2");
...
}
function checkform2() {
frm = document.getElementById("form2");
...
}
</SCRIPT>
<FORM id="form1" ... >
<INPUT id="m260" type="radio" name="form1" value="" onclick="setvalue1('FH26M', 'シャンプー(乾燥肌)', 'M (260ml)', 1890);"><LABEL for="m260">乾燥肌の方:M (260ml)</LABEL> \1,890-<BR>
...
<INPUT type="button" value="送信" onclick="checkform1();" name="submit1">
</FORM>
<FORM id="form2" ... >
<INPUT id="tm260" type="radio" name="form2" value="" onclick="setvalue2('FHT26M', 'トリートメント(乾燥肌)', 'M (260ml)', 1890);"><LABEL for="tm260">乾燥肌の方:M (260ml)</LABEL> \1,890-<BR>
...
<INPUT type="button" value="送信" onclick="checkform2();" name="submit1">
</FORM>
________________________________________
(b)関数に汎用性を持たせる。
フォームのidを関数の引数として渡すことにより、フォームの増減やエラー処理の追加等の将来的な仕様変更に、柔軟に対応することができます。
q=800754の回答がこの方式です。
(source5)_______________________________
<SCRIPT language="JavaScript">
function setvalue(formid, shouhinnumber, shouhinmei, bikou1, kakaku) {
frm = document.getElementById(formid);
...
}
function checkform(formid) {
frm = document.getElementById(formid);
...
}
</SCRIPT>
<FORM id="form1" ... >
<INPUT id="m260" type="radio" name="form1" value="" onclick="setvalue('form1', 'FH26M', 'シャンプー(乾燥肌)', 'M (260ml)', 1890);"><LABEL for="m260">乾燥肌の方:M (260ml)</LABEL> \1,890-<BR>
...
<INPUT type="button" value="送信" onclick="checkform('form1');" name="submit1">
</FORM>
<FORM id="form2" ... >
<INPUT id="tm260" type="radio" name="form2" value="" onclick="setvalue('form2', 'FHT26M', 'トリートメント(乾燥肌)', 'M (260ml)', 1890);"><LABEL for="tm260">乾燥肌の方:M (260ml)</LABEL> \1,890-<BR>
...
<INPUT type="button" value="送信" onclick="checkform('form2');" name="submit1">
</FORM>
________________________________________
以上です。
不明な点はご質問ください。
補足
<script type="text/javascript"> <!-- // 値をセットする処理 function setvalue(shouhinnumber, shouhinmei, kakaku, bikou1, bikou2, formid) { frm = document.getElementById(formid); frm.shouhinnumber.value = shouhinnumber; frm.shouhinmei.value = shouhinmei; frm.bikou1.value = bikou1; frm.bikou2.value = bikou2; frm.kakaku.value = kakaku; } function checkform(formid) { frm = document.getElementById(formid); // alert(frm.shouhinnumber.value+"\n"+frm.shouhinmei.value+"\n"+frm.bikou1.value+"\n"+frm.bikou2.value+"\n"+frm.kakaku.value); // 選択されていたので送信 frm.submit(); return; } //--> </script> <FORM id="form1" action="cgi-bin/cart/setcook.cgi" method="POST"> <INPUT type="hidden" name="shouhinnumber" value=""> <INPUT type="hidden" name="shouhinmei" value=""> <INPUT id="sm260" type="radio" name="bikou1" value="M (260ml)" onClick="setvalue('FHS26M', 'シャンプー(乾燥肌)', 1800, 'form1');"><LABEL for="sm260">乾燥肌の方:M (260ml)</LABEL> <BR> <INPUT id="sm500" type="radio" name="bikou1" value="M (500ml)" onClick="setvalue('FHS50M', 'シャンプー(乾燥肌)', 3400, 'form1');"><LABEL for="sm500">乾燥肌の方:M (500ml)</LABEL><BR> <INPUT id="sn260" type="radio" name="bikou1" value="N (260ml)" onClick="setvalue('FHS26N', 'シャンプー(脂性肌)', 1600, 'form1');"><LABEL for="sn260">脂性肌の方:N (260ml)</LABEL><BR> <INPUT id="sn500" type="radio" name="bikou1" value="N (500ml)" onClick="setvalue('FHS50N', 'シャンプー(脂性肌)', 3000, 'form1');"><LABEL for="sn500">脂性肌の方:N (500ml)</LABEL><BR> <INPUT type="hidden" name="kakaku" value=""> <SELECT name="kazu"> <OPTION>0 </OPTION> <OPTION>1 </OPTION> <OPTION>2 </OPTION> <OPTION>3 </OPTION> <OPTION>4 </OPTION> <OPTION>5 </OPTION> </SELECT> <BR> <INPUT type="button" value="送信" onClick="checkform('form1');"> </FORM> ちなみにこれは備考2を必要としません。 もし、備考1:タイプと備考2:カラーの組み合わせが出た場合を想定してなのですが…。 なお、タイプ・カラーはCGIにて定義済みです。 前回同様にSUBMIT以前にスクリプトエラーを起こします。。。