【问题标题】:difficult with radio button control in html with javascript使用 javascript 在 html 中使用单选按钮控制很困难
【发布时间】:2013-06-11 13:37:29
【问题描述】:

我正在使用 Javascript 控制我的应用程序中的单选按钮。单选按钮的数量并不总是相同的。当单选按钮只有一个时,我遇到了问题。功能是:

function ChangeDiv() {
    var i;
    var j;

    for (i=0; i<document.doc_copy.rad.length; i++) {
        if (document.doc_copy.rad[i].checked) {
            document.getElementById(document.doc_copy.rad[i].value).style.display='block';
        } else {
            document.getElementById(document.doc_copy.rad[i].value).style.display='none';
        }
    }
}

如果选中单选按钮,我会显示一个隐藏的 HTML div。问题是当我只有一个单选按钮时,没有执行 bucle for 并且没有显示隐藏的 div。

【问题讨论】:

  • 你在函数运行之前递增吗?如果只有一个,请考虑不使用单选按钮。这种情况违反了预期的使用标准。
  • 你能用小提琴演示一下这个问题吗?
  • .rad 是什么类型的对象?你是怎么分配的?只是一种预感,但您最好使用选择器并将这些无线电转储到变量 var rad = $("#myRadios"); 中,将其分配给文档对象可能会给您带来一些麻烦,具体取决于您的页面的复杂程度。
  • @ginman:是什么让你觉得 OP 正在使用,甚至愿意使用 jQuery?
  • document.getElementById("myRadios");?如果我真的在回答这个问题,我想我会证明它是白痴。

标签: javascript html radio-button


【解决方案1】:

再次阅读后,我相信我注意到了代码中的某些内容。您检查 document.doc_copy.rad.length(我想是单选按钮),但是当您编写代码以显示 DIV 时,您使用此 document.getElementById(document.doc_copy.rad[i].value).style.display。我认为您应该拥有与要隐藏/显示的 div 相关的其他内容,而不是 rad[i]。


感谢 Barmar,我意识到我的答案是错误的。

当你只有一个单选按钮时,你的索引为0。这意味着FOR语句根本不会被执行。

您需要使用 DO...WHILE 以确保您无论如何都会执行一次。

function ChangeDiv(){   var i;  var j;      i = 0;  do {        if(document.doc_copy.rad[i].checked){           document.getElementById(document.doc_copy.rad[i].value).style.display='block';      }else{          document.getElementById(document.doc_copy.rad[i].value).style.display='none';       }   i++;    } while(i<=document.doc_copy.rad.length);
}

【讨论】:

  • 如果使用 jquery,则使用 $.each
  • 他的for语句为什么不执行? .length 应该是 1,0 &lt; 1 是真的。
  • 同理,第一个if不执行
  • @Barmar - 你是对的!我想到的是索引而不是长度。
猜你喜欢
  • 1970-01-01
  • 2017-08-15
  • 1970-01-01
  • 1970-01-01
  • 2018-02-06
  • 1970-01-01
  • 1970-01-01
  • 2012-02-23
  • 1970-01-01
相关资源
最近更新 更多