HTML5にはcontentEditableという属性があります。この値がtrueだと、その要素はブラウザ内で編集可能となります。この値がfalseだと編集不可能になります。
javaScript
document.addEventListener('DOMContentLoaded',function(){
// button要素にclickイベントのリスナーをセット
var button = document.querySelector('#btn');
button.addEventListener('click',function(){
// p 要素
var p = document.querySelector('#p');
// 編集可能かどうかで条件分岐
if(p.isContentEditable == false) {
// 編集不可なら編集可能にする
p.contentEditable = 'true';
// フォーカスを当てる
p.focus();
// ボタンの表記を変更
button.textContent = '編集不可にする';
} else {
// 編集可能なら編集不可にする
p.contentEditable = 'false';
// ボタンの表記を変更
button.textContent = '編集可能にする';
}
},false);
},false);
HTML
<p><button id="btn">編集可能にする</button></p> <p id="p">このテキストは編集することができます</p>
サンプル
このテキストは編集することができます