特定のdivの名前を変更する機能があります。私がそれを機能させようとしている方法は次のようなものです:
- ユーザーの右クリック div
- ユーザーがコンテキスト メニューの [名前の変更] をクリックする
- Div は入力要素を取得し、自動的にフォーカスされます
- Enterキーを押すか、画面をクリックすると、入力が送信されます
ほとんどの手順を完了しましたが、「名前の変更」をクリックした後、入力要素がフォーカスされていません。コードは次のとおりです。
function Rename( ){
ClickedFile.innerHTML = "<input class='Rename' type='text' value='" + ClickedFile.innerHTML + "'>";
ClickedFile.childNodes[0].focus();
}
ClickedFile は、右クリックされたノードです。innerHTML の変更は正常に機能しますが、.focus() は機能しません。その理由はわかりません。コンソールでもエラーは発生しません。
私も使ってみました:
ClickedFile.childNodes[0].select();
ClickedFile.childNodes[1].focus();
ClickedFile.focus();
それらのどれも機能していません。
編集:
JQuery を使用すると役立つことはわかっていますが、これがうまくいかない理由を知りたいと思っています。
問題を修正しました。イベントハンドラーと関係があります。私の答えは以下に掲載されています。