javascript - JS - 带图像的单选按钮

标签 javascript html css

我讨厌成为编码世界中的菜鸟......我要出去遛狗,同时寻求一些帮助。

我有五个图像将用作按钮“向上”状态,以及五个图像用作按钮“向下”状态。我想要做的就是,当单击一个按钮时,所有图像都会变回向上状态,而我选择的图像会变为向下状态。简单就对了。当我尝试访问图像名称然后将其与向下的图像切换时,我迷路了。我得到了这个工作,但我在 if 语句中使用了两个巨大的 switch 语句。太长了,我知道我可以做得更好。

有人能指出我正确的方向吗?你甚至可以给我提示,让我自己弄清楚并让我变得更坚强:)

谢谢

var pathStr = "images/lessons/lessonBtns/";
var btnArray = ["kBtn", "firstBtn", "secondBtn", "thirdBtn", "fourthBtn"];

function toggleGradeBtns(gradeBtn) {
  var gradeBtnArray = document.getElementsByClassName("grade-btn");
  console.log(gradeBtnArray);

  for (var i = 0; i < gradeBtnArray.length; i++) {
    gradeBtnArray[i].children[0].src = "images/lessons/lessonBtns/" + btnArray[i] + ".png";
    gradeBtnArray[i].dataset.checked = 0;
  }

  if (gradeBtn.dataset.checked == 0) {
    gradeBtn.dataset.checked = 1;
    console.log(gradeBtn.children[0].src);
    switch (gradeBtn.children[0].src) {
      case pathStr + "kBtn.png":
        gradeBtn.children[0].src = pathStr + "kBtnDown.png";
        break;

      case pathStr + "firstBtn.png":
        gradeBtn.children[0].src = pathStr + "firstBtnDown.png";
        break;

      case pathStr + "secondBtn.png":
        gradeBtn.children[0].src = pathStr + "secondBtnDown.png";
        break;

      case pathStr + "thirdBtn.png":
        gradeBtn.children[0].src = pathStr + "thirdBtnDown.png";
        break;

      case pathStr + "fourthBtn.png":
        gradeBtn.children[0].src = pathStr + "fourthBtnDown.png";
        break;
    }
  } else {
    gradeBtn.dataset.checked = 0;
    switch (gradeBtn.children[0].src) {
      case pathStr + "kBtn.png":
        gradeBtn.children[0].src = pathStr + "kBtn.png";
        break;

      case pathStr + "firstBtn.png":
        gradeBtn.children[0].src = pathStr + "firstBtn.png";
        break;

      case pathStr + "secondBtn.png":
        gradeBtn.children[0].src = pathStr + "secondBtn.png";
        break;

      case pathStr + "thirdBtn.png":
        gradeBtn.children[0].src = pathStr + "thirdBtn.png";
        break;

      case pathStr + "fourthBtn.png":
        gradeBtn.children[0].src = pathStr + "fourthBtn.png";
        break;
    }
  }
}

最佳答案

我删除了许多无用的 JavaScript,并更改了单击按钮的激活方式。 为了简洁,我还删除了 console.log

var pathStr = "images/lessons/lessonBtns/";
var btnArray = ["kBtn", "firstBtn", "secondBtn", "thirdBtn", "fourthBtn"];

function toggleGradeBtns(gradeBtn) {
  var gradeBtnArray = document.getElementsByClassName("grade-btn");

  for (var i = 0; i < gradeBtnArray.length; i++) {
    gradeBtnArray[i].children[0].src = pathStr + btnArray[i] + ".png";
  }

  gradeBtn.children[0].src = gradeBtn.children[0].src.slice(0, -4) + "Down.png";
}

关于javascript - JS - 带图像的单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60696506/

相关文章:

HTML5 Swiffy 动画完成时的 JavaScript 监听器?

javascript - <table/> 内的 Bootstrap-datetimepicker 未正确显示

javascript - Express.js 路由器发布请求返回 404

javascript - 如何在mean/angular js中检测文件是否从客户端下载成功

jquery - 在 jquery 中使用 css 将 div 拉伸(stretch)到浏览器高度

javascript - 如何防止 wordpress 插件 Assets (css 和 js 文件)在所有页面上加载

javascript - 如何根据cookie值从页面中删除元素?

javascript - 兄弟 div 上的 removeClass 不起作用

css - 如何在脚本中设置图像高度

html - 打印时使用 css 在每页上重复页眉