首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在点击各种按钮时更改各种div的innerHTML?

如何在点击各种按钮时更改各种div的innerHTML?
EN

Stack Overflow用户
提问于 2020-07-25 22:53:00
回答 2查看 471关注 0票数 0

在我的网页中,我有不同的按钮(在.addbutton类中)。当单击其中的第一个选项时,会出现一个带有下拉列表的<div>,用户可以从其中选择两个选项(#p1、`#p2)中的任何一个,这两个选项会根据所单击的按钮而有所不同。

当单击每个选项时,我希望它出现在与所单击的初始.addbutton相对应的<div>中。(例如,如果第一个.addbutton被单击(#bradd),我希望在第一个div (#bdiv)中选择选项)我设法做到了这一点,以便它们总是出现在#bdiv中,无论单击的是什么.addbutton,但我不知道如何使每个选项都出现在相应的div中。JS设置两个选项的innerHTML

代码语言:javascript
运行
复制
    document.getElementById("bradd").onclick = function() {
      document.getElementById("p1").innerHTML = "Cereal"
      document.getElementById("p2").innerHTML = "Juice"
    }

    document.getElementById("mmadd").onclick = function() {
      document.getElementById("p1").innerHTML = "2x small fruit"
      document.getElementById("p2").innerHTML = "Big fruit"
    }

JS更改第一个div的innerHTML (#bdiv)

代码语言:javascript
运行
复制
      document.getElementById("p1").onclick = function() {
        var newItem = document.createElement("div")
        newItem.innerHTML = document.getElementById("p1").innerHTML document.getElementById("bdiv").appendChild(newItem)
      }
      document.getElementById("p2").onclick = function() {
        var newItem = document.createElement("div")
        newItem.innerHTML = document.getElementById("p2").innerHTML
        document.getElementById("bdiv").appendChild(newItem)
      }

我的HTML:

代码语言:javascript
运行
复制
    <h1>Meal Plan Customizer</h1>
    <div id="list">
      <input type="checkbox">
      <p>Breakfast:</p>
      <button class="addbutton" id="bradd">+</button>
      <div id="bdiv"></div>
      <br>
      <input type="checkbox">
      <p>Mid-Morning:</p>
      <button class="addbutton" id="mmadd">+</button>
      <div id="mdiv"></div>
      <br>
      <input type="checkbox">

          <div id="dropdownList">
            <p id="p1">Option1</p><br><br>
            <p id="p2">Option2</p><br><br>
          </div>

        </div>
      </div>
EN

回答 2

Stack Overflow用户

发布于 2020-07-25 23:36:25

您的代码应该可以工作。请检查以下内容:https://jsfiddle.net/oliverdev/3wsfgov1/

如果您的代码不工作,这是因为在加载HTML之前加载了Javascript代码。您可以像这样修改Javascript代码:

代码语言:javascript
运行
复制
window.onload = function(e){ 
  document.getElementById("bradd").onclick = function() {
    document.getElementById("p1").innerHTML = "Cereal"
    document.getElementById("p2").innerHTML = "Juice"
  }

  document.getElementById("mmadd").onclick = function() {
    document.getElementById("p1").innerHTML = "2x small fruit"
    document.getElementById("p2").innerHTML = "Big fruit"
  }
}

它会为你工作的

票数 0
EN

Stack Overflow用户

发布于 2020-07-25 23:59:08

您正在使这件事变得更加复杂和重复。

通过将数据存储在结构化对象中并对内容元素使用类,您可以为所有这些创建通用的事件侦听器

下面的内容并不完整,但它会让您很好地了解如何处理这样的事情

代码语言:javascript
运行
复制
var data = {
  bradd: {
    p1: "Cereal",
    p2: "Juice"
  },
  mmadd: {
    p1: "2x small fruit",
    p2: "Big fruit"
  }
}

var selectedButton = null;


var opts = document.querySelectorAll('#dropdownList p');

for (let p of opts) {
  p.addEventListener('click', updateContent)
}
// generic event handler for all the options
function updateContent() {
  const content = selectedButton.closest('.item').querySelector('.content')
  content.innerHTML = this.innerHTML
  togglePopup()
}

document.querySelector('#xbutton').addEventListener('click', togglePopup)


// generic event handler for all buttons
function addButtonClicked() {
  selectedButton = this;// store selected for use when option selected
  var wantedData = data[selectedButton.id];
  for (let p of opts) {
    p.innerHTML = wantedData[p.id]
  }
  togglePopup();
}
for (let btn of document.getElementsByClassName("addbutton")) {
  btn.addEventListener("click", addButtonClicked)
}

function togglePopup() {
  var popStyle = document.getElementById("addPopUp").style;
  popStyle.display = popStyle.display === "block" ? 'none' : 'block'
}
代码语言:javascript
运行
复制
#addPopUp {
  display: none
}
代码语言:javascript
运行
复制
<h1>Meal Plan Customizer</h1>
<div id="list">
  <div class="item">
    <p>Breakfast:</p>
    <button class="addbutton" id="bradd">+</button>
    <div class="content"></div>
  </div>
  <div class="item">
    <p>Mid-Morning:</p>
    <button class="addbutton" id="mmadd">+</button>
    <div class="content"></div>
  </div>
</div>

<div id="addPopUp">
  <h3 id="h3">Select what you would like to add:</h3>
  <span id="xbutton"><strong>&times;</strong></span>

  <div class="dropdown">
    <div id="dropdownList">
      <p id="p1">Option1</p>
      <p id="p2">Option2</p>
      <!-- <p id="p3">Option3</p><br><br>
      <p id="p4">Option4</p>-->
    </div>
  </div>
</div>

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

https://stackoverflow.com/questions/63089772

复制
相关文章

相似问题

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