2017-10-15 8 views
0

私はここで質問に答えようとしていて、わかりやすいと思われるもので自分の苦労を感じました。
は、このHTMLを考えてみましょう:入力id予約語

<input type="text" id="width" value="foo" /> 
 
<input type="button" value="width.value" onclick="console.log(width.value)"/> 
 
<input type="button" value="window.width.value" onclick="console.log(window.width.value)"/>

我々はそれがないすべての入力の値を記録しているonClickイベントがありwidthidと2つのボタンとinputを持っています。それらの間の違いは、ある入力が変数として直接入力のIDにアクセスし、もう1つがwindow.width.valueによってそれを実行していることです。
ここで驚くべき部分は、window.width.valueのみが動作し、もう1つがundefinedを返すことです。

JavaScriptの予約語を検索しましたが、widthについては何も見つかりませんでしたが、それはheightキーワードでも同じです。
何が欠けていますか?

+1

これはすべて範囲についてです。あなたの 'width.value'では、ボタンのwidth属性にアクセスしています。この場合は 'width.value == this.width.value'となります。 –

+0

@FrederikHansenが言ったことは、あなたの基本的なことはINPUTにも属性があることを忘れています。.. widthとheightのように.. – Keith

答えて

1

メソッドがbuttonオブジェクトで呼び出されています。したがって、ウィンドウのwidthプロパティを指定する場合を除いて、ボタンオブジェクトのwidthプロパティによってシャドーされます。この場合、ボタンの幅にはvalueプロパティがありません。

+0

私はそれについて忘れているとは思えません! :) –