人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

javascriptのthis。

chkNum(this)のthisは何を指しているんですか?
chkNum(T)になぜTが入るんですか?chkNum()だとなぜダメなんですか。

thisがわかりません。
日本語で「これ」という意味ですが、日本語にしても意味ないですか?

<script type="text/javascript">

function chkNum(T) {
if (T.value.match(/[^0-9]/g)) {
T.value="";
document.form1.text1.value=T.replace(/[^0-9/g]/,"");
}
}

</script>


<form name="form1">
<input type="text" name="text1" onkeyup="chkNum(this)">
</form>

テキストボックスに数字以外が入力されたら、ゴニョゴニョするスクリプトです。

●質問者: webxix
●カテゴリ:コンピュータ インターネット
✍キーワード:JavaScript スクリプト ダメ テキスト ボックス
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ardarim
●35ポイント ベストアンサー

HTMLのタグの中でonkeyupなどのon?でJavaScriptを呼び出す場合、「this」というキーワードは特別に、そのJavaScriptコードを呼び出したタグそのものを意味します。特別なキーワードなので、日本語で「これ」などと書いてもダメです。


<input type="text" name="text1" onkeyup="chkNum(this)">

というHTMLがあるとき、onkeyupのJavaScriptが呼び出されたとき、thisは、このinputタグそのものを意味します。


また、関数の実体を定義している部分では、chkNum(T)と、「T」という文字が使われていますが、関数を定義する場合には、引数には任意の文字を使うことができます。これは一般的には「仮引数」と呼ばれ、その関数が呼び出されたときに「T」は、本来の引数に置き換えられて実行されます。

イメージとしては、chkNum(this)が呼び出されたとき、T = this; が実行されて(Tにthisが代入されて)から chkNum(T)が呼び出されるイメージです。


つまり、サンプルのHTMLでは、onkeyが実行される時、「T」はinputタグを意味します。そのため、T.valueは、this.valueと同じ意味であり、さらにthisはinputタグを指すため、inputタグのvalueを参照することになります。

◎質問者からの返答

ありがとうございました。よく分かりました。


2 ● KirakiraHikaru
●35ポイント

thisはそのオブジェクト自身を指しています。

(ですので日本語で「です」だとダメです)

この場合、input type="text" name="text1"でthisを用いているので、

このときのthisは document.form1.text1です。

onkeyup="chkNum(this)"によって

function chkNum(T)が呼ばれると、

このときのTにdocument.form1.text1が入ります。

そのため、 T.value=""としたときに、

document.form1.text1のvalueに空文字が設定されるのです。

もし、chkNum(T)ではなくchkNum()と定義していた場合は、

onkeyup="chkNum(this)"でthisを引数に設定して渡すことができないので、

chkNum内ではTによってdocument.form1.text1を参照することができず、

document.form1.text1のように直接指定しなければならなくなります。


固定的な使い方であれば直接指定しても良いのですが、

同じ制御をするテキストボックスが増えたときや、

他のページでも流用することを考えると、

function chkNum(T)を定義しておき、

hkNum(this)として呼び出す方が良いかと思います。


CodeZine JavaScriptの関数とメソッド

http://codezine.jp/a/article.aspx?aid=221

◎質問者からの返答

ありがとうございました。理解できました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ