[解決済み] JSの要素移動
2022-03-09 22:14:54
質問
私はjavascriptを学んでいて、簡単な練習をしようとしています:私はテキストボックスを持っていて、キーボードでそれを制御したいです。 私のHTMLは次のとおりです(今のところ、私はちょうど1つの方向を試しています)。
const myBox = document.querySelector("h1");
document.addEventListener('keydown', function (event){
if (event.keyCode == '38'){
myBox.style.top -= 5;
console.log("test if it works");
}
});
で、私のHTMLは
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Tuto</title>
<style>
h1 {
width: 200px;
height: 40px;
border: 5px solid #BADA55;
color: #A28;
margin: 0;
text-align: center;
}
</style>
</head>
<body>
<div><h1>My text</h1></div>
<script type="text/javascript" src="main.js"></script>
</body>
</html>
コンソールログを使ったチェックテストはうまくいきました。イベントリスナーもそうです。 しかし、私のボックスは動きません。どのように私はそれを解決することができ、なぜ私の.style.topの使用は間違っているのですか?
ありがとうございました。
解決方法は?
topの値を変更して要素を移動するには、要素の位置を固定(デフォルト)にしてはいけません。位置を
absolute
,
relative
,
fixed
etc...
.
現在の
top
,
left
などを使用します。
Element#getBoundingClientRect
これによって正しい初期値が得られ、文字列をパースする必要がなくなります。このため
top
は単位(px、emなど)を持つ必要があるため、そのために
px
を変更した
top
.
const myBox = document.querySelector("h1");
document.addEventListener('keydown', function(event) {
if (event.keyCode == '38') {
myBox.style.top = myBox.getBoundingClientRect().top - 5 + 'px'; // parse the string to number, subtract 5, and add 'px'
console.log(myBox.style.top);
}
});
h1 {
position: absolute;
top: 0;
left: 0;
width: 200px;
height: 40px;
border: 5px solid #BADA55;
color: #A28;
margin: 0;
text-align: center;
}
<div>
<h1>My text</h1>
</div>
関連
-
[解決済み】パッシブイベントリスナー内部でpreventDefaultができない
-
[解決済み】Uncaught TypeError: nullのプロパティ'value'を読み取ることができない
-
[解決済み】ある要素を別の要素に移動させるには?
-
[解決済み】PhantomJS 2.1.1を使用してReactJSアプリケーションをレンダリングできない理由とは?
-
[解決済み] 要素外でのクリックを検出するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] jQueryで要素にスクロールする
-
[解決済み] どのDOM要素にフォーカスがあるかを調べるには?
-
[解決済み] 指定された要素にクラスを追加するには?
-
[解決済み] idによる要素の削除
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】TypeError: $(...).DataTable は関数ではありません。
-
[解決済み】node.js TypeError: path must be absolute or specify root to res.sendFile [JSONのパースに失敗しました]。
-
[解決済み] jQueryで、ユーザーがそのフィールドを編集している間、テキストフィールドの最初の文字を大文字にするにはどうすればよいですか?
-
[解決済み] Uncaught TypeError: 未定義のプロパティ 'top' を読み込めない
-
[解決済み] Uncaught Invariant Violation: 前のレンダリング中よりも多くのフックをレンダリングした
-
[解決済み】jquery $.ajaxオブジェクトのresponseJSONプロパティを取得する方法 [重複]。
-
[解決済み] テスト
-
[解決済み】SyntaxError: ChromeのJavascriptコンソールでUnexpected Identifierが発生する。
-
[解決済み】DOMException: サポートされているソースが見つからなかったため、読み込みに失敗しました。
-
[解決済み】Babel NodeJS ES6: SyntaxError: 予期しないトークンのエクスポート