我有三个HTML按钮,ordersproductssupplier.我想要当用户单击orders时,显示订单,当用户单击products时,显示产品,以及单击供应商的名称.

function changedata(parameter){
    if(parameter==0){
        document.getElementById('myorders').style.fontSize="25px";
    }
    else if(parameter==1){
        document.getElementById('myproducts').style.fontSize="25px";
    }
    else{
        document.getElementById('mysupplier').style.fontSize="25px";
    }
}
<button class="button" onclick="changedata(0)">ORDERS</button>
<button class="button" onclick="changedata(1)">PRODUCTS</button>
<button class="button" onclick="changedata(2)">SUPPLIER</button>
<div id="myorders">
    <p>Laptop, Earphone</p>
</div>
<div id="myproducts">
    <p>Earphone, smart watch</p>
</div>
<div id="mysupplier">
    <p>Amazon, E-kart</p>
</div>

但它不会隐藏数据并满足我的需要,我是一个web开发的初学者,只在按下相应的按钮时才寻找帮助来显示数据.

推荐答案

有一些更简单的方法将每个div连接到其相应的按钮,其中之一是使用data attributes.我们可以 for each 按钮添加一个数据属性,该按钮的文本与其对应的div中的id相匹配.

(我假设当你点击一个按钮时,其他divs个按钮都被隐藏,只有div个按钮显示.)

本例使用了更现代的JS技术,但我将指导您完成这些技术,对所有内容进行注释,并在最后提供文档.你不必理解这里的一切,但最终你可能会遇到这些事情,所以你不妨现在就看看.

下面简要介绍了这一切的工作原理:

  1. 从按钮中删除内联侦听器.现代JS使用addEventListener.
  2. 把纽扣包在一个容器里.我们将使用一种叫做event delegation的技术.我们没有将侦听器连接到每个按钮,而是将one连接到容器,这样可以捕获从其子元素"冒泡"DOM的任何事件.然后,我们可以在单击子元素时调用函数.
  3. 这个函数做了一些事情.首先,它判断单击的元素是否实际上是一个按钮.然后,它通过删除名为"show"的类来隐藏所有"面板"("show"将元素的display设置为block-最初所有面板的显示设置为none).然后基于按钮数据属性的id,它与之形成一个 Select 器,我们使用它来定位其相应的div并应用"show"类.

// Cache out buttons container, and all of the panels
const buttons = document.querySelector('.buttons');
const panels = document.querySelectorAll('.panel');

// Add an event listener to the buttons container
buttons.addEventListener('click', handleClick);

// When a child element of `buttons` is clicked
function handleClick(e) {
 
  // Check to see if its a button
  if (e.target.matches('button')) {

    // For every element in the `panels` node list use `classList`
    // to remove the show class
    panels.forEach(panel => panel.classList.remove('show'));

    // "Destructure" the `id` from the button's data set
    const { id } = e.target.dataset;

    // Create a selector that will match the corresponding
    // panel with that id. We're using a template string to
    // help form the selector. Basically it says find me an element
    // with a "panel" class which also has an id that matches the id of
    // the button's data attribute which we just retrieved.
    const selector = `.panel[id="${id}"]`;

    // Select the `div` and, using classList, again add the
    // show class
    document.querySelector(selector).classList.add('show');
  }
}
.panel { display: none; }
.show { display: block; }
.button { text-transform: uppercase; }
.button:hover { cursor: pointer; background-color: #fffff0; }
<div class="buttons">
  <button data-id="myorders" class="button">Orders</button>
  <button data-id="myproducts" class="button">Products</button>
  <button data-id="mysupplier" class="button">Supplier</button>
</div>

<div class="panel" id="myorders"><p>Laptop, Earphone</p></div>
<div class="panel" id="myproducts"><p>Earphone, smart watch</p></div>
<div class="panel" id="mysupplier"><p>Amazon, E-kart</p></div>

其他文件

Javascript相关问答推荐

从PWA中的内部存储读取文件

Google Apps脚本中的discord邀请API响应的日期解析问题

Chart.js V4切换图表中的每个条,同时每个条下有不同的标签.怎么做?

手机上的渲染错误文本必须在文本组件中渲染,但在浏览器上没有问题<><>

数字时钟在JavaScript中不动态更新

如何将Cookie从服务器发送到用户浏览器

如何将react—flanet map添加到remixjs应用程序

如何在ASP.NET JavaScript中使用Google Charts API仅对绘制为负方向的条形图移动堆叠条形图标签位置

让chart.js饼图中的一个切片变厚?

Reaction组件在本应被设置隐藏时仍显示

TinyMCE 6导致Data:Image对象通过提供的脚本过度上载

如何防止ionic 输入中的特殊字符.?

未捕获的运行时错误:调度程序为空

OnClick更改Json数组JSX中的图像源

如何在Java脚本中对数据进行签名,并在PHP中验证签名?

无法设置RazorPay订阅API项目价格

Angel Auth Guard-用户只有在未登录时才能访问登录页面,只有在登录时才能访问其他页面

如何为两条动态路由创建一个页面?

2.0.0-dev quill拖动文本不起作用如何使其拖动文本

JSdiscord机器人为什么不工作前缀?如何决定与discord机器人的问题?