変数の名前の取得

[新着] Webテンプレートを仮オープンしました



0   名前: 安藤 : 2006/11/13(月) 13:45  ID:Zm6vE89v
*********************************************************
<HEAD>
<SCRIPT language="JavaScript">
<!--
var a;
var d="jump!";
function b()
{
a="http://test.com";
}

function c()
{
location.href=a;
}
//-->
</SCRIPT>
</HEAD>
<BODY onload="b()">
<table width=100% border=1>
<tr>
<td>
<a href="javascript:c()">[dの中身を表示]</a>
</TD>
</tr>
</table>
</BODY>
*********************************************************
変数の中身で表示されたアンカーをクリックすると、
リンク先に飛ぶというスクリプトを組みたいのです。

ソースの中で、[dの中身を表示]というアンカー部分が
表示出来なくて困っています。
<SCRIPT src=〜.js>の指定を用いずに呼び出すことは可能でしょうか。
document.write(d)だと、新しいページに表示されてしまうので・・。



1   名前: 牛若 : 2006/11/13(月) 13:45  ID:Voxl8xGb
<a href="javascript:c()"><script>document.write(d)</script></a>
でダメですか?

2   名前: 安藤 : 2006/11/13(月) 13:45  ID:Zm6vE89v
牛若さん、迅速なレスをありがとうございます。
上記サンプルプログラムの方はうまく行きました^^

引き続き質問させてください。
少しだけ、サンプルソースを変更しますね。
********************************************
<HEAD>
<SCRIPT language="JavaScript">
<!--
var a;
var d;//(ここを変更)
function b()
{
a="http://test.com";
d="jump!"; //(ここを変更)
}

function c()
{
location.href=a;
}
//-->
</SCRIPT>
</HEAD>
<BODY onload="b()">
<table width=100% border=1>
<tr>
<td>
<a href="javascript:c()"><SCRIPT>document.write(d)</SCRIPT></a>
</TD>
</tr>
</table>
</BODY>
********************************************

上記は変数dの等式を関数b()内に移動して、ご教授どうりのスクリプトをあてはめたものです。
この場合、アンカーにはundefinedとなるのですが、dを表示したい時はどうすればよろしいでしょうか。
undefinedとなる理由は、全ソースを読んだ後にb()が読まれるため、
まだdに何も入っていないからだと思うのですが・・。

3   名前: 牛若 : 2006/11/13(月) 13:45  ID:zs0.YLrP
<BODY onload="b()">とする必要性がなければ

function b()
{
a="http://test.com";
d="jump!"; //(ここを変更)
}
b();

とすればよいのではないですか?
それから、このコードでは「d」はグローバルなので、あえて明示的に
var d;//(ここを変更)
と宣言する必要はありません。

4   名前: 匿名 : 2006/11/13(月) 13:45  ID:IbwOHKIj
>>3
スコープチェーンに関わるので、変数は極力var宣言すべき。

5   名前: 安藤 : 2006/11/13(月) 13:45  ID:Zm6vE89v
お返事が遅れてすみません。
再度関数呼び出しをすればいいのですね。
解決しました。ありがとうございました。

一覧へ戻る