首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将div更改为to区域,反之亦然,只使用普通的javascript而不使用jquery?

如何将div更改为to区域,反之亦然,只使用普通的javascript而不使用jquery?
EN

Stack Overflow用户
提问于 2022-12-01 20:19:24
回答 2查看 24关注 0票数 0

如何将div更改为文本区域,以便在单击按钮并再次单击同一按钮时编辑div中的文本,然后将该文本区域更改为div。

HTML

代码语言:javascript
运行
AI代码解释
复制
<button class="button">click me</button>
<div class="div">this is div or textarea</div>

JS

代码语言:javascript
运行
AI代码解释
复制
const button = document.querySelector('button');
const div = document.querySelector('div');


let isTextarea = false

button.addEventListener('click', () => { 
  if(isTextarea) {
    const div = document.createElement('div')
    const textarea = document.createElement('textarea')
    div.innerHTML = textarea.value
    textarea.parentNode.replaceChild(div, textarea)
    isTextarea = false
  }else {
    const textarea =document.createElement('textarea')
    textarea.innerHTML = div.innerHTML
    div.parentNode.replaceChild(textarea, div)
    isTextarea = true
  }
} )
EN

回答 2

Stack Overflow用户

发布于 2022-12-01 20:24:28

您不需要在两个分支中同时创建<div><textarea>。如果您有一个textarea,您只需要创建一个div,如果您有一个div,则只需要创建一个文本区域。(引用您刚刚创建并没有追加的元素的textarea.parentNode,会像预期的那样抛出错误--这是没有意义的。)

您需要在文档中选择现有的<div><textarea>

代码语言:javascript
运行
AI代码解释
复制
const button = document.querySelector('button');
let isTextarea = false
button.addEventListener('click', () => {
  if (isTextarea) {
    const div = document.createElement('div');
    const textarea = document.querySelector('textarea');
    div.innerHTML = textarea.value;
    textarea.parentNode.replaceChild(div, textarea);
    isTextarea = false;
  } else {
    const textarea = document.createElement('textarea');
    const div = document.querySelector('div');
    textarea.innerHTML = div.innerHTML;
    div.parentNode.replaceChild(textarea, div)
    isTextarea = true
  }
})
代码语言:javascript
运行
AI代码解释
复制
<button class="button">click me</button>
<div class="div">this is div or textarea</div>

或者在页面负载上创建两个元素,但最初只追加一个元素。

代码语言:javascript
运行
AI代码解释
复制
const button = document.querySelector('button');
const div = document.body.appendChild(document.createElement('div'));
div.textContent = 'this is div or textarea';
const textarea = document.createElement('textarea');

let isTextarea = false
button.addEventListener('click', () => {
  if (isTextarea) {
    div.innerHTML = textarea.value;
    textarea.parentNode.replaceChild(div, textarea);
    isTextarea = false;
  } else {
    textarea.innerHTML = div.innerHTML;
    div.parentNode.replaceChild(textarea, div)
    isTextarea = true
  }
})
代码语言:javascript
运行
AI代码解释
复制
<button class="button">click me</button>

如果需要,还可以通过检查哪个元素isTextarea来丢弃.isConnected标志。

代码语言:javascript
运行
AI代码解释
复制
const button = document.querySelector('button');
const div = document.body.appendChild(document.createElement('div'));
div.textContent = 'this is div or textarea';
const textarea = document.createElement('textarea');

button.addEventListener('click', () => {
  if (textarea.isConnected) {
    div.innerHTML = textarea.value;
    textarea.parentNode.replaceChild(div, textarea);
  } else {
    textarea.innerHTML = div.innerHTML;
    div.parentNode.replaceChild(textarea, div)
  }
})
代码语言:javascript
运行
AI代码解释
复制
<button class="button">click me</button>

票数 0
EN

Stack Overflow用户

发布于 2022-12-01 20:39:29

除非.div div的第一个子程序必须包含特定的东西,否则您实际上不需要替换该子对象。把你不需要的都藏起来。

代码语言:javascript
运行
AI代码解释
复制
let div;
let textarea;

document.addEventListener('DOMContentLoaded', function() {
  div = document.querySelector('.div > div');
  textarea = document.querySelector('.div > textarea');

  document.querySelector('button').addEventListener('click', () => { 
    div.classList.toggle('hidden')
    textarea.classList.toggle('hidden')
  } )

  textarea.addEventListener('input', () => { 
    div.innerHTML = textarea.value
  } )
})
代码语言:javascript
运行
AI代码解释
复制
.hidden {
  display: none
}
代码语言:javascript
运行
AI代码解释
复制
<button class="button">click me</button>
<div class="div"><div class="hidden"></div><textarea></textarea></div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74650865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档