javascript 将标签转换< p>为文本区域

x6492ojm  于 2023-08-02  发布在  Java
关注(0)|答案(2)|浏览(123)

我试着用js为我的wiki做一些东西,当你点击一个文本时,它会用一个按钮把它变成文本区域,当你点击按钮时,它会更新文本。
我尝试添加按钮与改变一个div值,但它没有工作。

2wnc66cl

2wnc66cl1#

您可以使用contenteditable property

const 
  p_EditOnOff = document.querySelector('p')
, btn_EditOff = document.querySelector('#btn-EditOff')
  ;

p_EditOnOff.addEventListener('click', () =>
  {
  if ( p_EditOnOff.contentEditable === 'true') return;
  p_EditOnOff.contentEditable = true;
  btn_EditOff.classList.toggle('noDisplay',false);
  
  p_EditOnOff.focus();
  })

btn_EditOff.onclick =_=>
  {
  btn_EditOff.classList.toggle('noDisplay',true);
  p_EditOnOff.contentEditable = false;
  }
.noDisplay {
  display: none;
}

p[contenteditable="false"] {
  cursor: pointer;
}
<p contenteditable="false">Some text</p>

<button id="btn-EditOff" class="noDisplay"> end edit </button>
tv6aics1

tv6aics12#

你可以在点击段落元素时隐藏它,然后在它后面添加一个文本区域和按钮。然后为按钮分配一个事件侦听器,以更新段落的textContent并再次显示它。
一个基本的例子:

document.querySelector('p').addEventListener('click', function(e) {
  // Consider putting these two elements in a container
  const textarea = document.createElement('textarea'),
    btn = document.createElement('button');
  textarea.value = this.textContent;
  btn.textContent = 'Save';
  btn.addEventListener('click', () => {
    this.textContent = textarea.value;
    this.style.display = '';
    textarea.remove();
    btn.remove();
  });
  this.style.display = 'none';
  this.after(textarea, btn);
});

个字符

相关问题