javascript - 根据复选框选择更改按钮文本

标签 javascript html

我有一个无序列表的复选框。如何创建一个根据选中的复选框更改按钮文本的函数?

1) 当没有选择任何复选框时,按钮将默认返回为“全部”。

2) 当仅选择一个复选框时,按钮的文本将更改以匹配选择,例如当选择“蓝色”复选框时,按钮也会显示为“蓝色”

3) 当选择两个或多个复选框时,按钮文本根据所做选择的数量显示为“2 selected”、“3 selected”、“4 selected”等

这是我到目前为止所拥有的:

document.getElementById('Blue').onclick = function() {
    document.getElementById('button').innerHTML = 'Blue';}

document.getElementById('Red').onclick = function() {
    document.getElementById('button').innerHTML = 'Red';}

document.getElementById('Green').onclick = function() {
    document.getElementById('button').innerHTML = 'Green';}
<button id="button">All</button>
<ul id="colorlist">
  <li><input type="checkbox" id="Blue" data-value="Blue" /><label>Blue</label></li>
  <li><input type="checkbox" id="Red" data-value="Red" /><label>Red</label></li>
  <li><input type="checkbox" id="Green" data-value="Green" /><label>Green</label></li>
</ul>

最佳答案

我使用了您的 HTML 并创建了下面的演示,可以满足您的所有三个要求。该代码很简单,并且适用于任意数量的复选框。

var selectedColours = [];

function selectionChanged(element) {
  if (element.checked) {
    selectedColours.push(element.value)
  } else {
    var index = selectedColours.indexOf(element.value);
    if (index > -1) {
      selectedColours.splice(index, 1);
    }
  }

  setButtonText();
}

function setButtonText() {
  var text = 'All';

  if (selectedColours.length > 1) {
    document.getElementById('button').innerHTML = selectedColours.length + ' selected';
  } else if (selectedColours.length === 1) {
    document.getElementById('button').innerHTML = selectedColours[0];
  } else {
    document.getElementById('button').innerHTML = 'All';
  }
}
<button id="button">All</button>
<ul id="colorlist">
  <li><input type="checkbox" id="Blue" value="Blue" onchange="selectionChanged(this)" /><label>Blue</label></li>
  <li><input type="checkbox" id="Red" value="Red" onchange="selectionChanged(this)" /><label>Red</label></li>
  <li><input type="checkbox" id="Green" value="Green" onchange="selectionChanged(this)" /><label>Green</label></li>
</ul>

关于javascript - 根据复选框选择更改按钮文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42940433/

相关文章:

javascript - 我可以将一个值从 crm 字段传递给 js 函数吗

javascript - 计算多个输入的总和 - jQuery Range Slider

java - 如何将 JSON 数组从服务器发送到客户端,即(java 到 AJAX/Javascript)?

javascript - getElementById 给出结果加上字符串

html - 如何修改Powershell代码,以便仅为文件而非目录创建超链接?

javascript - Angular JS ng-repeat 在一个文本区域元素中

javascript - 页面方向改变时响应

javascript - ASP.NET - 覆盖浏览器缓存的 Javascript 和样式表

html - 将 iFrame 推文嵌入 Google 幻灯片

javascript - 在执行一个函数后运行 jquery 函数