アプリ版:「スタンプのみでお礼する」機能のリリースについて

下のスクリプトは、プルダウンメニューの項目を選択するとフォームにそのvalueを渡すものです。
フォームに original という name を指定しています。
putselect関数の中の document.reg.original の original を直で打つのではなく、
putselectの引数として、指定したのですがどのようにすると良いでしょうか?


JavaScript

function putselect(obj){
document.reg.original.value = obj.options[obj.selectedIndex].value;
}

HTML

<form name="reg">
<input name="original">
<select onchange="putselect(this)">
<option >#作品の選択</option>
<option value="a">A</option>
<option value="b">B</option>
<option value="c">C</option>
</select>
</form>
<hr>


こうなってほしい。


function putselect(obj,フォーム名の変数){
document.reg.フォーム名の変数.value = obj.options[obj.selectedIndex].value;
}

HTML

<form name="reg">
<input name="original">
<select onchange="putselect(this,original)">
<option >#作品の選択</option>
<option value="a">A</option>
<option value="b">B</option>
<option value="c">C</option>
</select>
</form>
<hr>

これと同じ動作であれば、nameでなくidなどでも構いません。
よろしくお願い致します。

A 回答 (2件)

まぁ考え方次第ですね。


putselect()が、別フォームの情報を取りに行く可能性があるなら
二つ引数は必要ですが、つねにobjと同じフォームから参照するなら
引数を一つにしてしまう方が良いかもしれません。

function putselect(obj){
var f=obj.form;
f.elements["original"].value = obj.options[obj.selectedIndex].value;
}

<form>
<input name="original">
<select onchange="putselect(this)">
<option >#作品の選択</option>
<option value="a">A</option>
<option value="b">B</option>
<option value="c">C</option>
</select>
    • good
    • 0
この回答へのお礼

回答ありがとうございます。常にobjとおなじフォームです。
以下のようにすることで、やりたいことが出来るようになました。
ありがとうございます。

function putselect(obj,str){
var f=obj.form;
f.elements[str].value = obj.options[obj.selectedIndex].value;
}

<form>
<input name="original">
<select onchange="putselect(this,'original')">
<option >#作品の選択</option>
<option value="a">A</option>
<option value="b">B</option>
<option value="c">C</option>
</select>

お礼日時:2009/01/19 10:18

formにnameをつけるのはあまりお勧めできません


this.formでアクセスしてください。
フォーム内ならobj.formってかんじ

この回答への補足

ご指摘ありがとうございます。
このように変更しました。

function putselect(form,obj){
form.original.value = obj.options[obj.selectedIndex].value;
}

<form>
<input name="original">
<select onchange="putselect(this.form,this)">
<option >#作品の選択</option>
<option value="a">A</option>
<option value="b">B</option>
<option value="c">C</option>
</select>

補足日時:2009/01/18 23:11
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!