エレメント名に変数を使えますか?

[上に] [前に] [次に]
ばーばぱぱ 1999/06/21(月) 11:10:46
フレームがNo1,No2,No3の3つあり
No1のテキストなどで onclick="Kasoru=this.name" と設定し、
No3のボタンを押すと
KASORU=parent.No1.Kasoru
alert(KASORU)
parent.No1.document.FORM1.KASORU.focus();
としたいのですが、うまくいきません。
エレメント名に変数は使えないのでしょうか?

Tmb 1999/06/21(月) 11:50:05
直接使うことはできないと思います。
この場合evalを使って
KASORU=eval("parent.No1.document.FORM1"+Kasoru)
とする手もありますが,個人的にはあまりevalは好きなやり方ではないです。

それと変数名の大文字小文字がいくら区別されるからと言って,それで
使い分けるのはいかがなものかと。

例えばonClick="NowObj=this"とオブジェクトそのものを渡し,
No3で
NowObjName=NowObj.name
とする方がきれいに思います。

ばーばぱぱ 1999/06/21(月) 13:54:56
>KASORU=eval("parent.No1.document.FORM1"+Kasoru)
としてもできませんでした。
また、オブジェクトそのものを渡しても結局駄目でした。
どうしたらよいでしょうか。

Tmb 1999/06/21(月) 14:10:40
あ,失礼。
>KASORU=eval("parent.No1.document.FORM1"+Kasoru)
のFORM1の後にピリオドが抜けてました。

あと,この場合KASORUはオブジェクト自体ですから,指定する
ときには
>parent.No1.document.FORM1.KASORU.focus()
ではなく
KASORU.focus()
といった具合で使いますが,そこはどうしてますか?
オブジェクトそのものを渡す場合も同様,NewObj.focus()という
使い方になりますが。

ちなみに以下が確認に用いたスクリプトです。NN3で作ったので細部の仕様は
異なりますが,オブジェクトの引き渡しの部分を参考にしてみてください。

<script language="javascript">
function func(){
alert(NowObj.name);
NowObj.value="Hi";
}
</script>
<form name="form1">
<input type="text" name="text1" onChange="NowObj=this">
</form>
<form name="form2">
<input type="button" name="button2" onClick="func()" value="2">
</form>

ばーばぱぱ 1999/06/21(月) 15:01:41
[[解決]]
Tmbさんありがとうございます。
無事解決しました。
以下のようになりました。

<input type="text" name="text1" onClick="NowObj=this">//parent.No1にて
<input type="button" name="button1" onClick="iti()" value="1">//parent.No3にて

//parent.No3にて
function iti(){
NowObjName=parent.No1.NowObj.name
if(NowObjName==''){
alert("NoFocus")
}
else{
alert(NowObjName)
parent.No1.NowObj.focus();
}
}

Tmb 1999/06/21(月) 15:09:34
あ,そうか。フレーム付きだから
>NowObj.name
ではなくて
>NowObjName=parent.No1.NowObj.name
という形でしたね。失礼しました (^^;
何にせよ,うまくいってよかったです。

[上に] [前に] [次に]