RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1517961
Accepted
powerg
powerg
Asked:2023-05-06 09:03:51 +0000 UTC2023-05-06 09:03:51 +0000 UTC 2023-05-06 09:03:51 +0000 UTC

如何在点击时将一个类应用于不同的块?

  • 772

当点击“上传文件”按钮时,每个按钮加载自己的文件。现在,无论按下哪个按钮,所有内容都会应用于第一个按钮。谢谢

const inputFiles = document.querySelectorAll('.input-file');
if (inputFiles) {
    const inputFileClose = document.querySelector('.input-file-close');
    const inputFileName = document.querySelector('.input-file-name');
    let pattern = /((?:.(?!\(\d+\)))+.)(?:\(\d+\))?\..+/
    inputFiles.forEach(inputFile => {
        inputFile.addEventListener("change", function (e) {
            inputFileName.textContent = this.files[0].name.match(pattern)[1]
            inputFileName.classList.add("_active")
            inputFileClose.classList.add("_active")
        });
        inputFileClose.addEventListener("click", function (e) {
            inputFileName.classList.remove("_active")
            inputFileClose.classList.remove("_active")
        });
    });
}
.left-form-calculator__files {
    width: 100%;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
    flex-wrap: wrap;
    -webkit-box-pack: start;
    -ms-flex-pack: start;
    justify-content: flex-start;
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center;
    padding: 20px 0 0 0;
    margin: -10px -5px
}

.left-form-calculator__file-inputs {
    position: relative;
    min-width: 175px;
    height: 53px;
    padding: 10px 5px 10px 0;
    margin: 0 0 0 5px
}

.left-form-calculator__file-input-value {
    position: relative;
    padding: 10px 5px
}

.left-form-calculator__input-file-name {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: center;
    -ms-flex-pack: center;
    justify-content: center;
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center;
    text-align: center;
    border: none;
    border-radius: 10px;
    background-color: #f8f8fa;
    font-size: 14px;
    line-height: 1.2857142857;
    color: #91919b;
    padding: 15px 20px;
    display: none
}

.left-form-calculator__input-file-name._active {
    display: block
}

.left-form-calculator__input-file-close{
   position: absolute;
    top: 2px;
    right: 2px;
    display: none;
    cursor: pointer
    min-width: 18px;
    height: 18px;
    border-radius: 50%;
    background: #f5912d;
    color: #fff;
    font-size: 12px;
    padding: 6px;
    -webkit-transition: all .3s ease 0s;
    -o-transition: all .3s ease 0s;
    transition: all .3s ease 0s
}

.left-form-calculator__input-file-close:hover::before {
    background: #af671e
}

.left-form-calculator__input-file-close._active {
    display: block
}

.left-form-calculator__file {
    display: none
}

.left-form-calculator__label-file {
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: center;
    -ms-flex-pack: center;
    justify-content: center;
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center;
    text-align: center;
    padding: 15px 20px;
    border: 1px solid #e1e1eb;
    border-radius: 10px;
    background: #fff;
    border-radius: 10px;
    cursor: pointer;
    -webkit-transition: all .3s ease 0s;
    -o-transition: all .3s ease 0s;
    transition: all .3s ease 0s
}

.left-form-calculator__label-file:hover {
    border: 1px solid #f5912d
}

.left-form-calculator__label-icon {
    width: 20px;
    height: 20px;
    margin: 0 10px 0 0
}

.left-form-calculator__label-text {
    white-space: nowrap;
    font-weight: 400;
    font-size: 14px;
    line-height: 1.2857142857;
    color: #91919b
}
<div class="left-form-calculator__files">
  <div class="left-form-calculator__file-inputs">
    <input class="left-form-calculator__file input-file" type="file" name="file" id="input-file">
    <label class="left-form-calculator__label-file" for="input-file">
      <div class="left-form-calculator__label-text">Загрузить файл</div>
    </label>
  </div>
  <div class="left-form-calculator__file-input-value">
    <div class="left-form-calculator__input-file-name input-file-name" type="text" id="filename"></div>
    <div class="left-form-calculator__input-file-close input-file-close _icon-close">x</div>
  </div>
</div>

<div class="left-form-calculator__files">
  <div class="left-form-calculator__file-inputs">
    <input class="left-form-calculator__file input-file" type="file" name="file" id="input-file">
    <label class="left-form-calculator__label-file" for="input-file">
      <div class="left-form-calculator__label-text">Загрузить файл</div>
    </label>
  </div>
  <div class="left-form-calculator__file-input-value">
    <div class="left-form-calculator__input-file-name input-file-name" type="text" id="filename"></div>
    <div class="left-form-calculator__input-file-close input-file-close _icon-close">x</div>
  </div>
</div>

javascript
  • 1 1 个回答
  • 18 Views

1 个回答

  • Voted
  1. Best Answer
    UModeL
    2023-05-06T13:20:13Z2023-05-06T13:20:13Z

    复制复制别人的代码时,检查是否有相同的name和id。

    const inputFiles = document.querySelectorAll('[type="file"]');
    if (inputFiles) {
      let pattern = /((?:.(?!\(\d+\)))+.)(?:\(\d+\))?\..+/;
    
      inputFiles.forEach(inputFile => {
        let parent = inputFile.closest('.left-form-calculator__files');
        let inputFileClose = parent.querySelector('.input-file-close');
        let inputFileName = parent.querySelector('.input-file-name');
        inputFile.addEventListener('change', function() {
          inputFileName.textContent = this.files[0].name.match(pattern)[1]
          inputFileName.classList.add('_active')
          inputFileClose.classList.add('_active')
        });
        inputFileClose.addEventListener('click', function() {
          inputFileName.classList.remove('_active')
          inputFileClose.classList.remove('_active')
        });
      });
    }
    .left-form-calculator__files {
      width: 100%;
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      -ms-flex-wrap: wrap;
      flex-wrap: wrap;
      -webkit-box-pack: start;
      -ms-flex-pack: start;
      justify-content: flex-start;
      -webkit-box-align: center;
      -ms-flex-align: center;
      align-items: center;
      padding: 20px 0 0 0;
      margin: -10px -5px
    }
    
    .left-form-calculator__file-inputs {
      position: relative;
      min-width: 175px;
      height: 53px;
      padding: 10px 5px 10px 0;
      margin: 0 0 0 5px
    }
    
    .left-form-calculator__file-input-value {
      position: relative;
      padding: 10px 5px
    }
    
    .left-form-calculator__input-file-name {
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      -webkit-box-pack: center;
      -ms-flex-pack: center;
      justify-content: center;
      -webkit-box-align: center;
      -ms-flex-align: center;
      align-items: center;
      text-align: center;
      border: none;
      border-radius: 10px;
      background-color: #f8f8fa;
      font-size: 14px;
      line-height: 1.2857142857;
      color: #91919b;
      padding: 15px 20px;
      display: none
    }
    
    .left-form-calculator__input-file-name._active {
      display: block
    }
    
    .left-form-calculator__input-file-close {
      position: absolute;
      top: 2px;
      right: 2px;
      display: none;
      cursor: pointer min-width: 18px;
      height: 18px;
      border-radius: 50%;
      background: #f5912d;
      color: #fff;
      font-size: 12px;
      padding: 6px;
      -webkit-transition: all .3s ease 0s;
      -o-transition: all .3s ease 0s;
      transition: all .3s ease 0s
    }
    
    .left-form-calculator__input-file-close:hover::before {
      background: #af671e
    }
    
    .left-form-calculator__input-file-close._active {
      display: block
    }
    
    .left-form-calculator__file {
      display: none
    }
    
    .left-form-calculator__label-file {
      position: absolute;
      left: 0;
      top: 0;
      right: 0;
      bottom: 0;
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      -webkit-box-pack: center;
      -ms-flex-pack: center;
      justify-content: center;
      -webkit-box-align: center;
      -ms-flex-align: center;
      align-items: center;
      text-align: center;
      padding: 15px 20px;
      border: 1px solid #e1e1eb;
      border-radius: 10px;
      background: #fff;
      border-radius: 10px;
      cursor: pointer;
      -webkit-transition: all .3s ease 0s;
      -o-transition: all .3s ease 0s;
      transition: all .3s ease 0s
    }
    
    .left-form-calculator__label-file:hover {
      border: 1px solid #f5912d
    }
    
    .left-form-calculator__label-icon {
      width: 20px;
      height: 20px;
      margin: 0 10px 0 0
    }
    
    .left-form-calculator__label-text {
      white-space: nowrap;
      font-weight: 400;
      font-size: 14px;
      line-height: 1.2857142857;
      color: #91919b
    }
    <div class="left-form-calculator__files">
      <div class="left-form-calculator__file-inputs">
        <input class="left-form-calculator__file input-file" type="file" name="file-1" id="input-file-1">
        <label class="left-form-calculator__label-file" for="input-file-1">
          <div class="left-form-calculator__label-text">Загрузить файл</div>
        </label>
      </div>
      <div class="left-form-calculator__file-input-value">
        <div class="left-form-calculator__input-file-name input-file-name" type="text" id="filename-1"></div>
        <div class="left-form-calculator__input-file-close input-file-close _icon-close">x</div>
      </div>
    </div>
    
    <div class="left-form-calculator__files">
      <div class="left-form-calculator__file-inputs">
        <input class="left-form-calculator__file input-file" type="file" name="file-2" id="input-file-2">
        <label class="left-form-calculator__label-file" for="input-file-2">
          <div class="left-form-calculator__label-text">Загрузить файл</div>
        </label>
      </div>
      <div class="left-form-calculator__file-input-value">
        <div class="left-form-calculator__input-file-name input-file-name" type="text" id="filename-2"></div>
        <div class="left-form-calculator__input-file-close input-file-close _icon-close">x</div>
      </div>
    </div>

    • 1

相关问题

  • 第二个 Instagram 按钮的 CSS 属性

  • 由于模糊,内容不可见

  • 弹出队列。消息显示不正确

  • 是否可以在 for 循环中插入提示?

  • 如何将 JSON 请求中的信息输出到数据表 Vuetify vue.js?

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5