javascript - 当用户更改类型时添加新类

标签 javascript html css

<分区>

我昨天发布了一个类似的问题并得到了一些有用的回复,但我现在遇到的问题略有不同。当用户更改 UI 上的 type 时,类将添加到 html 元素(这只是在元素周围添加了一个蓝色边框)。我没有收到任何错误消息,但它什么也没做。

document.querySelector(DOM.inputType).addEventListener('change', function() {
  if (usersInput.type === "Health") {
    document.querySelector('.input_type').className += " blue";
    document.querySelector('.input_activity').className += " blue";
    document.querySelector('.input_time').className += " blue";
    document.querySelector('.input_end').className += " blue";
    document.querySelector('.input_btn').className += " blue_btn";
  }
});
.blue {
  border: 2px solid blue !important;
}

.blue_btn {
  color: blue;
}
<div class="input">
  <select class="input_type" id="input_type" name="input_type" style="height:36px" placeholder="Type" required>
  </select>
  <input class="input_activity" type="text" name="activity" placeholder="What do you need to do?" size="60" style="height:32px" required>
  <select class="input_time" name="Time" style="height:36px" required>
    <option value="Start">Start</option>
  </select>
  <select class="input_end" name="end" style="height:36px" required>
    <option value="End">End</option>
  </select>
  <input class="input_btn" type="button" value="Submit!">
</div>

这是 usersInput 的来源:

var usersInput = UICtrl.getInput();

这是“getInpu”的来源:

return {
    getInput: function() {
        return {
            type: document.querySelector(DOMstrings.inputType).value,
            activity: document.querySelector(DOMstrings.inputActivity).value,
            startTime: document.querySelector(DOMstrings.inputStart).value,
            endTime: document.querySelector(DOMstrings.inputEnd).value
        };
    },
},

这些是从“类型”下拉菜单中选择的选项:

<select class="input_type" id="input_type" name="input_type" style="height:36px" placeholder="Type" required>
    <option value="">Type</option>
    <option value="health">Health</option>
    <option value="work">Work</option>
    <option value="leisure">Leisure</option>
</select>

请注意,我已经在论坛上查看过类似的问题,但我发现没有一个能真正回答我的问题。在此先感谢您的支持!

最佳答案

很难确切地说出问题是什么,因为我看不到你的 JS 的不同部分在哪里运行......但是,我最好的猜测是:

  1. 您没有在 select 元素上正确设置值(您的选项在提供的 HTML 中不可见,我假设它们是通过某些 JS 添加的?)。您的选项需要具有“健康”值:
    <option value="Health">Health<option>
  1. 您打错电话了:
   var usersInput = UICtrl.getInput();

尝试将此函数作为事件监听器中的第一行调用,这是因为您想及时获取特定时刻的 DOM 状态:

document.querySelector(DOM.inputType).addEventListener('change', function() {
  var usersInput = UICtrl.getInput();

  if (usersInput.type === "Health") {
    document.querySelector('.input_type').className += " blue";
    document.querySelector('.input_activity').className += " blue";
    document.querySelector('.input_time').className += " blue";
    document.querySelector('.input_end').className += " blue";
    document.querySelector('.input_btn').className += " blue_btn";
  }
});
  1. DomStrings 对象属性或 DOM.inputType 属性存在拼写错误。

关于javascript - 当用户更改类型时添加新类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58025739/

相关文章:

jquery - 如何将 minus px 添加到我的插件中?

python - SSL:尝试打开 Nav Canada 网站时出现 CERTIFICATE_VERIFY_FAILED

javascript - 如何使 Angular uib-typeahead 在绑定(bind)模型后立即显示建议?

javascript - 当元素滚动到网页上时执行计数器脚本

javascript - 过程数据 - 在服务中还是在 Controller 中?

html - ng-blur with uib-typeahead (ui-bootstrap)

html - div 内的对齐问题

Javascript - 将数组结果过滤到下拉列表中

ruby-on-rails - 为什么 Rails 不显示网页

javascript - 使用 jquery 将 RenderPage 插入到 div 中