ダブルクリックするとinput要素になるp要素を作る
仕組みとしては、ダブルクリックイベントを取ってreplaceChildで置き換えているだけ。
input要素内でエンターキーが押されるか、input要素からフォーカスが外れるとp要素に戻る。
HTML
<!doctype html> <html lang="ja"> <head> <meta charset="utf-8"> <title>ダブルクリックするとpがinputに変化します</title> <script type="text/javascript" src="p2input.js"></script> <body> <h1>ダブルクリックするとpがinputに変化します</h1> <p>ああああああああああああ</p> </body> </html>
p2input.js
window.onload = function() { document.querySelector("p").addEventListener("dblclick", function() { var parent = this.parentNode; var p = this; var input = document.createElement("input"); input.setAttribute("type", "text"); input.value = p.innerText; // エンターキーが押されるかフォーカスが外れるかするとp要素に戻すようにしておく // エンターキーが押された場合 input.addEventListener("keydown", function(e) { if(e.keyCode === 13) { p.innerText = this.value; parent.replaceChild(p, this); } }); // フォーカスが外れた場合 input.addEventListener("blur", function() { p.innerText = this.value; parent.replaceChild(p, this); }); parent.replaceChild(input, p); input.focus(); }); };