【问题标题】:Update/Remove Value of Radio Button When Clicked Adds Infinitely?单击时更新/删除单选按钮的值无限添加?
【发布时间】:2022-07-01 23:45:06
【问题描述】:

因此,在我将所有输入都作为复选框编写此代码之前,当我单击或取消单击选项时,它可以 100% 正常工作。

我的问题是我将一些输入更改为单选按钮,现在我的代码的下半部分无法正常工作。

如果我单击一个单选按钮,它会显示值 10,但如果我再次单击它,它会显示 20,然后我可以继续无限单击它,它会不断将值添加到 100000 而不是简单地从 0 到 10 又回到 0。

document.addEventListener("click", ({ target }) => {
  if (target.className === "class1" && target.checked) {
    window.menuItems += parseInt(target.value);
  } else if (target.className === "class1" && !target.checked) {
    window.menuItems -= parseInt(target.value);


// this logic below for my radio buttons doesn't work the same 

      } else if (target.className === "radio1" && target.checked) {
        window.tip += parseInt(target.value);
      } else if (target.className === "radio1" && !target.checked) {
        window.tip -= parseInt(target.value);
      } else {
        return;
      }

是否有内置函数来检查是否选择了无线电输入?

因为使用target.checked 对单选按钮不起作用,我也尝试了target,但效果不一样。

【问题讨论】:

    标签: javascript forms radio-button


    【解决方案1】:

    我认为这个 eventListener 现在会在所有单选按钮上触发,尝试通过类名只为单选按钮设置它:

    document.querySelector(".class1, .radio1").addEventListener("click", function(event) {
    

    并停止传播

    event.stopPropagation();
    

    【讨论】:

    • 我不明白你写的什么?你刚刚写了一个空函数?
    • 这只是函数的上半部分,其余的可以保持不变,除了 event.stopPropagation() 需要在你的函数中实现。并且目标必须通过 e.target 设置: let target = e.target;
    • 顶部功能工作正常,问题是单选按钮没有像复选框一样的内置功能,称为检查,所以我不知道如何更改它
    • 当我点击它时,我已经得到了我的单选按钮的值,我的问题是当它已经被选中时再次点击它会添加值而不是减去它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多