装机DIY-配件价格比较

news2024/11/24 2:28:10

计算机配件价格比较

🚀🚀🚀🚀最近无事总刷到DIY装机视频,自己也有兴趣,同时这段时间也在学前端,发现每次比较价格都有重新搜,重新计算,且不同配置也不好比较,所以写了个粗略版本的计算器,先看效果。

在这里插入图片描述

这个基于HTML、CSS和JavaScript的网页旨在帮助用户比较不同渠道和品牌的计算机配件价格。

该页面提供了输入框和下拉菜单,让用户输入CPU、主板、显卡、内存条、硬盘、电源和机箱等配件的价格信息,并根据输入的数据生成一个汇总表格,展示了每个配件的渠道、品牌和价格,并计算了所有配件的总价格。

一、界面功能

  • 选择渠道和品牌: 用户可以通过下拉菜单选择不同的渠道和品牌。
  • 输入价格: 提供了价格输入框,方便用户输入各个配件的价格信息。
  • 计算价格: 点击“计算价格”按钮后,网页会将用户输入的价格数据汇总,生成一个表格展示总价格以及每个配件的详细信息。

二、改进空间

虽然这个网页提供了基本的功能,但仍有改进的空间:

  • 增加更多配件选项: 包括更多类型的配件,使得网页更全面。
  • 优化用户界面: 改善界面设计和交互,提高用户体验。
  • 自动获取价格功能: 整合数据获取功能,使用户能够自动获取最新价格。

这个网页是一个简单但有潜力的起点,通过进一步优化和扩展,可以为用户提供更加全面和便捷的计算机配件价格比较服务。

三、源码

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>计算机配件装机价格</title>
  <style>
    table {
      border-collapse: collapse;
      border: 1px solid #dfe2e5;
      margin-bottom: 20px;
    }

    th,
    td {
      border: 1px solid #dfe2e5;
      padding: 6px 13px;
    }

    th {
      background-color: #f3f4f6;
      font-weight: bold;
    }

    td {
      background-color: #fff;
    }

    tbody tr:nth-child(even) td {
      background-color: #f6f8fa;
    }

    select,
    input[type="number"],
    input[type="text"],
    button {
      padding: 6px 10px;
      border: 1px solid #ccc;
      border-radius: 4px;
      margin-bottom: 5px;
    }

    button {
      background-color: #0366d6;
      color: white;
      cursor: pointer;
    }

    button:hover {
      background-color: #065fd4;
    }

    #outputTablesContainer {
      display: flex;
      flex-wrap: wrap;
      gap: 10px;
      /* 图片间隔 */
    }

    .active {
      /* 添加你想要的样式 */
      border-collapse: separate;
      border-spacing: 0;
    }

    .active th {
      background-color: #0366d6;
      color: white;
      font-weight: bold;
    }

    .active td {
      background-color: #f3f4f6;
      color: #333;
    }

    .active tbody tr:nth-child(even) td {
      background-color: #fff;
    }

    .active .total td {
      text-align: center;
      font-weight: bold;
      background-color: #f3f4f6;
      color: #333;
    }
  </style>
</head>

<body>
  <div id="box" style="width: auto;height: 330px;">
    <div>
      <table id="inputTable">
        <tr>
          <th>名称</th>
          <th>渠道</th>
          <th>品牌</th>
          <th>价格</th>
        </tr>
        <tr>
          <td>CPU</td>
          <td>
            <select id="cpuChannel">
              <option value="拼多多" selected>拼多多</option>
              <option value="淘宝">淘宝</option>
              <option value="京东">京东</option>
              <!-- 添加更多选项,如果需要的话 -->
            </select>
          </td>

          <td><input type="text" id="cpuBrand"></td>
          <td><input type="number" id="cpuPrice"></td>
        </tr>
        <tr>
          <td>主板</td>
          <td>
            <select id="motherboardChannel">
              <option value="拼多多" selected>拼多多</option>
              <option value="淘宝">淘宝</option>
              <option value="京东">京东</option>
              <!-- 添加更多选项,如果需要的话 -->
            </select>
          </td>
          <td><input type="text" id="motherboardBrand"></td>
          <td><input type="number" id="motherboardPrice"></td>
        </tr>
        <tr>
          <td>显卡</td>
          <td>
            <select id="gpuChannel">
              <option value="拼多多" selected>拼多多</option>
              <option value="淘宝">淘宝</option>
              <option value="京东">京东</option>
              <!-- 添加更多选项,如果需要的话 -->
            </select>
          </td>
          <td><input type="text" id="gpuBrand"></td>
          <td><input type="number" id="gpuPrice"></td>
        </tr>
        <tr>
          <td>内存条</td>
          <td>
            <select id="ramChannel">
              <option value="拼多多" selected>拼多多</option>
              <option value="淘宝">淘宝</option>
              <option value="京东">京东</option>
              <!-- 添加更多选项,如果需要的话 -->
            </select>
          </td>
          <td><input type="text" id="ramBrand"></td>
          <td><input type="number" id="ramPrice"></td>
        </tr>
        <tr>
          <td>硬盘</td>
          <td>
            <select id="hddChannel">
              <option value="拼多多" selected>拼多多</option>
              <option value="淘宝">淘宝</option>
              <option value="京东">京东</option>
              <!-- 添加更多选项,如果需要的话 -->
            </select>
          </td>
          <td><input type="text" id="hddBrand"></td>
          <td><input type="number" id="hddPrice"></td>
        </tr>
        <tr>
          <td>电源</td>
          <td>
            <select id="psuChannel">
              <option value="拼多多" selected>拼多多</option>
              <option value="淘宝">淘宝</option>
              <option value="京东">京东</option>
              <!-- 添加更多选项,如果需要的话 -->
            </select>
          </td>
          <td><input type="text" id="psuBrand"></td>
          <td><input type="number" id="psuPrice"></td>
        </tr>
        <tr>
          <td>机箱</td>
          <td>
            <select id="caseChannel">
              <option value="拼多多" selected>拼多多</option>
              <option value="淘宝">淘宝</option>
              <option value="京东">京东</option>
              <!-- 添加更多选项,如果需要的话 -->
            </select>
          </td>
          <td><input type="text" id="caserand"></td>
          <td><input type="number" id="casePrice"></td>
        </tr>
      </table>
      <button id="cacl">计算价格</button>
    </div>
    <hr>

  </div>



  <!-- 输出结果表格 -->
  <div id="outputTablesContainer" style="margin-top: 100px;"></div>
  <script>
    class MyTable {
      constructor(channel, brand, price) {
        this.channel = channel;
        this.brand = brand;
        this.price = price;
      }
    }
    function generateTable(headers, data, totalPrice) {
      let table = document.createElement('table');
      table.classList.add('active')
      let thead = document.createElement('thead');
      let tbody = document.createElement('tbody');
      let tr = document.createElement('tr');
      // 添加表头
      headers.forEach(header => {
        let th = document.createElement('th');
        th.appendChild(document.createTextNode(header));
        tr.appendChild(th);
      });

      thead.appendChild(tr);
      table.appendChild(thead);

      // 添加数据行
      for (let i = 0; i < data.length; i++) {
        let tr = document.createElement('tr');
        for (let val in data[i]) {
          let td = document.createElement('td');
          td.textContent = data[i][val]
          tr.appendChild(td);
        }
        tbody.appendChild(tr);
      }
      let trLast = document.createElement('tr');
      let trLastTd = document.createElement('td');
      trLastTd.colSpan = headers.length
      trLastTd.textContent = "总价:" + totalPrice
      trLast.appendChild(trLastTd)

      trLast.classList.add('total')
      tbody.appendChild(trLast)

      table.appendChild(tbody);
      // 找到需要放置表格的 <div>
      const tableContainer = document.getElementById('outputTablesContainer');
      tableContainer.appendChild(table);
    }



    function getData() {
      let cpuPrice = parseFloat(document.getElementById("cpuPrice").value);
      let motherboardPrice = parseFloat(document.getElementById("motherboardPrice").value);
      let gpuPrice = parseFloat(document.getElementById("gpuPrice").value);
      let ramPrice = parseFloat(document.getElementById("ramPrice").value);
      let hddPrice = parseFloat(document.getElementById("hddPrice").value);
      let psuPrice = parseFloat(document.getElementById("psuPrice").value);
      let casePrice = parseFloat(document.getElementById("casePrice").value);
      let cpuChannel = document.getElementById("cpuChannel").value;
      let cpuBrand = document.getElementById("cpuBrand").value;
      let motherboardChannel = document.getElementById("motherboardChannel").value;
      let motherboardBrand = document.getElementById("motherboardBrand").value;
      let gpuChannel = document.getElementById("gpuChannel").value;
      let gpuBrand = document.getElementById("gpuBrand").value;
      let ramChannel = document.getElementById("ramChannel").value;
      let ramBrand = document.getElementById("ramBrand").value;
      let hddChannel = document.getElementById("hddChannel").value;
      let hddBrand = document.getElementById("hddBrand").value;
      let psuChannel = document.getElementById("psuChannel").value;
      let psuBrand = document.getElementById("psuBrand").value;
      let caseChannel = document.getElementById("caseChannel").value;
      let caseBrand = document.getElementById("caserand").value;
      let totalPrice = cpuPrice + motherboardPrice + gpuPrice + ramPrice + hddPrice + psuPrice + casePrice
      const headers = ['渠道', '品牌', '价格'];
      const tableData = [];
      tableData.push(new MyTable(cpuChannel, cpuBrand, cpuPrice))
      tableData.push(new MyTable(motherboardChannel, motherboardBrand, motherboardPrice))
      tableData.push(new MyTable(gpuChannel, gpuBrand, gpuPrice))
      tableData.push(new MyTable(ramChannel, ramBrand, ramPrice))
      tableData.push(new MyTable(hddChannel, hddBrand, hddPrice))
      tableData.push(new MyTable(psuChannel, psuBrand, psuPrice))
      tableData.push(new MyTable(caseChannel, caseBrand, casePrice))

      console.log(tableData)
      generateTable(headers, tableData, totalPrice)
    }

    document.querySelector('#cacl').addEventListener('click', function () {
      getData()
    })

  </script>
</body>

</html>

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1310667.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【毕业设计】基于STM32的智能衣柜设计

1、功能说明 功能如下: 1、用stm32控制ds18b20采集温度 2、然后按键可以设置上下限温度&#xff0c; 3、采集的温度低于下限温度时候 打开加热片开始加热&#xff0c; 4、加热到上限温度关闭加热片停止加热&#xff0c; 5、采集的温度可以在oled显示&#xff0c; 6、然后弄个按…

c语言:指针运算

目录 指针类型与整型进行加减 规律 同类型指针减法运算 其他类型的指针运算 一个数据对象的内存位置有两个重要信息&#xff1a; 数据对象的首地址。数据对象占用存储空间大小 指针类型的值存储的是内存地址。内存地址是从0开始&#xff0c;依次加1的整型数据。 指针类…

单元测试二(实验)-云计算2023.12-云南农业大学

1、实践系列课《深入浅出Docker应用》 https://developeraliyun.com/adc/scenarioSeries/713c370e605e4f1fa7be903b80a53556?spma2c6h.27088027.devcloud-scenarioSeriesList.13.5bb75b8aZHOM2w 容器镜像的制作实验要求 创建Dockerfile文件: FROM ubuntu:latest WORKDIR data…

Git应用——代码提交规范 feat ,fix ,style

当前使用 feat 增加新功能fix 修复问题/BUGstyle 代码风格相关无影响运行结果的perf 优化/性能提升refactor 重构revert 撤销修改test 测试相关docs 文档/注释chore 依赖更新/脚手架配置修改等workflow 工作流改进ci 持续集成types 类型定义文件更改wip 开发中 别处看到 fea…

玩转大数据14:分布式计算框架的选择与比较

1. 引言 随着大数据时代的到来&#xff0c;越来越多的企业和组织需要处理海量数据。分布式计算框架提供了一种有效的方式来解决大数据处理的问题。分布式计算框架将计算任务分解成多个子任务&#xff0c;并在多个节点上并行执行&#xff0c;从而提高计算效率。 2. 分布式计算…

【操作系统导论】内存篇——分页

引入 采用 「分段」 的方式&#xff0c;将空间切成 不同长度的分片&#xff0c;会出现 碎片化 问题&#xff0c;随着时间推移&#xff0c;分配内存会越来越困难。 因此&#xff0c;值得考虑「分页」的方法&#xff1a; 将空间分割成 固定长度的分片 &#xff1b; 将物理内存…

斑马zebra目标检测数据集VOC+YOLO格式2300张

斑马是由四百万年前的原马进化出来的&#xff0c;最早出现的斑马可能是细纹斑马。有关史前马科动物的化石现存于美国爱达荷州克文的克文化石床国家博物馆。斑马的史前马为“克文马”&#xff08;美洲斑马或者克文斑马&#xff09;&#xff0c;学名为“Equussimplicidens”&…

智能守护,数据安全稳中求胜!上海迅软DSE助力家具家电行业引领潮流!

随着中国经济的蓬勃发展&#xff0c;家具家电企业正迎来“精品制造”的时代&#xff0c;业内竞争日益激烈。为了提升产品竞争力、扩大市场占有率&#xff0c;企业亟需加强对自主品牌的安全建设&#xff0c;确保品牌的自主知识产权、产品生产资料以及销售信息等核心数据不受泄漏…

Docker真的好难用啊,为什么说它移植性好啊?

看起来你对Docker有点困惑和挑战呀。Docker刚开始确实有点难以入门&#xff0c;但是一旦掌握了它的核心概念和操作&#xff0c;你会发现它其实非常强大和便利。 接下来我会根据你提出的问题和场景&#xff0c;详细地解答。 关于你的实际问题&#xff1a; 刚接触时的困难是正。…

如何实现服务注册与发现?

本文主要讲解如何实现服务注册与发现。 在分布式服务中&#xff0c;服务注册和发现是一个特别重要的概念&#xff0c;为什么需要服务注册和发现&#xff1f;常用的服务发现组件有哪些&#xff1f;服务注册和发现对一致性有哪些要求呢?下面我们就来学习服务发现相关的知识。 …

【五】Python 代理模式

文章目录 5.1 代理模式概述5.1.1 代理介绍5.1.2 代理模式的作用 5.2 代理模式的UML类图5.3 了解不同类型的代理5.3.1虚拟代理5.3.2 远程代理5.3.3 保护代理5.3.4 智能代理 5.4 现实世界中的代理模式5.5 代理模式的优点5.6 门面模式和代理模式之间的比较 5.1 代理模式概述 5.1.…

用XAMPP在Windows系统构建一个本地Web服务器

用XAMPP在Windows系统构建一个本地Web服务器 Build a Local Web Server for Windows with XAMPP By JacksonML 本文简要介绍如何获取和安装XAMPP以实现Windows环境下本地Web服务器的过程&#xff0c;希望对广大网友和学生有所帮助。 所谓本地Web服务器&#xff0c;即使用本地…

Python框架篇(5):FastApi-中间件使用

1.介绍 1.1 官网介绍 "中间件"是一个函数,它在每个请求被特定的路径操作处理之前,以及在每个响应返回之前工作. 它接收你的应用程序的每一个 请求. 然后它可以对这个 请求做一些事情或者执行任何需要的代码. 然后它将 请求传递给应用程序的其他部分 (通过某种 路径操…

slurm 23.11.0集群 debian 11.5 安装

slurm 23.11.0集群 debian 11.5 安装 用途 Slurm(Simple Linux Utility for Resource Management&#xff0c; http://slurm.schedmd.com/ )是开源的、具有容错性和高度可扩展的Linux集群超级计算系统资源管理和作业调度系统。超级计算系统可利用Slurm对资源和作业进行管理&a…

变电站蓄电池在线监测系统(论文+源码)

1. 系统设计 本次课题为变电站蓄电池在线监测系统的设计&#xff0c;其系统架构如图3.1所示&#xff0c;包括了主控制器STC89C52单片机&#xff0c;液晶显示器LCD1602,模数转换器ADC0832&#xff0c;电流传感器ACS712&#xff0c;分压电阻&#xff0c;蜂鸣器以及温度传感器。在…

Amazon SageMaker: 拓展机器学习边界,塑造未来创新趋势

授权说明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 亚马逊云科技开发者社区, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道。 近期在 re:Invent 2023 大会上&#xff0c;亚马逊云科技发布了一…

如何将Galaxybase图数据库应用于电力设备管理

导读 近日&#xff0c;受强冷空气影响&#xff0c;部分北方地区出现不同程度的降雪&#xff0c;并持续降温。据国家电网发布的预警通知&#xff0c;要求启动预警响应和应急机制&#xff0c;密切跟踪灾害预警信息和应急响应情况&#xff0c;滚动研判分析覆冰、积雪、低温等对电…

vite+vue3+electron搭建项目

编辑器使用vscode&#xff0c;打开一个空文件夹 第一步 初始化vite项目 初始化vite项目&#xff0c;命令 npm init vite 第二步 下载依赖 进入新建的项目&#xff0c;下载依赖&#xff0c;命令 cd vite-projec npm i第三步 使用cnpm下载 electron依赖 新建一个终端&#…

雪花算法详细讲解

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

HNCTF

[Week1]Interesting_http 题目提示&#xff1a;Give me your want! POST方式传参want参数&#xff0c;先随便传want1&#xff1b; 题目问你想要什么&#xff0c;肯定是flag呗&#xff0c;传参wantflag&#xff1b;提示不是admin 将数据包中的Cookie&#xff1a;usernotadmin修…