次のコードを使用して、#
(ハッシュタグ)をURLに追加して、CSS :target
属性を使用して作成されたライトボックスを閉じようとしています。このスクリプトは 'esc'キーのkeydownで実行されますが、example.com/#
ではなくexample.com/#undefined
が返されます。なぜこのスクリプトは未定義ですか?
私はJSの初心者であることをお詫びしますが、#
を返すように定義するにはどうすればよいですか?
$(document).on('keydown', function (e) {
if (e.keyCode === 27) {
var href = this.href;
window.location.hash = href;
}
});
戻り値だけではなく#
の#undefined
。
を使用することができ、 'のvarのhref = e.target.hrefを試してみてください|| ''; '、'ハンドラでは、 'this'は' href'プロパティを持たないドキュメントオブジェクトを参照するため、 'this.href'は未定義を返します –
' this'は 'href'プロパティを持たないまたは「this」が目標に達していません。デバッガにブラウザのコンソールパネルを使用する。 'console.log(this);'もしそれがundefinedを返すならば、私の推測では 'this'が問題です。 – NewToJS
htmlサンプルは –