简体   繁体   English

使用JavaScript动态显示/隐藏单选按钮组的单选按钮

[英]Dynamically Show/Hide Radio buttons of a Radio button group using JavaScript

I am looking for a way to Show/ Hide some of the Radio buttons of a Radio button group using JavaScript. 我正在寻找一种使用JavaScript显示/隐藏单选按钮组中某些单选按钮的方法。

How can this be achieved? 如何做到这一点?

Thanks 谢谢

The id attribute identifies the individual radio buttons. id属性标识各个单选按钮。 All of them will be related to the group by the name attribute 所有这些都将通过名称属性与组相关

You can get the individual radio buttons using something like 您可以使用以下方法获取单个单选按钮

var rbtn = document.getElementById('radioButton1');

Then set the display or visibility style to hide or show. 然后将显示或可见性样式设置为隐藏或显示。

rbtn.style.display = 'none'; // 'block' or 'inline' if you want to show.
document.getElementById('myRadioButtonId').style.display = 'none'; //hide it

document.getElementById('myRadioButtonId').style.display = 'block'; //show it

That's a very generic question, so I can only offer a very generic answer. 这是一个非常笼统的问题,所以我只能提供一个非常笼统的答案。 Using jQuery, for example: 例如,使用jQuery:

$("#some-selector .of-some-kind .for-the-things-you-wish-to-hide").hide();

Of course, what you're selecting, and under what circumstances you want to hide it can dramatically impact the best way to go about the problem. 当然,您选择的内容以及在什么情况下想要隐藏它都可能极大地影响解决问题的最佳方法。

Apply a CSS class to the radiobuttons then use a loop to set the display = 'none' for each radiobutton. 将CSS类应用于单选按钮,然后使用循环为每个单选按钮设置display = 'none'

Firstly, we need a cross-browser getElementsByClassName function 首先,我们需要一个跨浏览器的getElementsByClassName函数

/*
    Developed by Robert Nyman, http://www.robertnyman.com
    Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/
var getElementsByClassName = function (className, tag, elm){
    if (document.getElementsByClassName) {
        getElementsByClassName = function (className, tag, elm) {
            elm = elm || document;
            var elements = elm.getElementsByClassName(className),
                nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
                returnElements = [],
                current;
            for(var i=0, il=elements.length; i<il; i+=1){
                current = elements[i];
                if(!nodeName || nodeName.test(current.nodeName)) {
                    returnElements.push(current);
                }
            }
            return returnElements;
        };
    }
    else if (document.evaluate) {
        getElementsByClassName = function (className, tag, elm) {
            tag = tag || "*";
            elm = elm || document;
            var classes = className.split(" "),
                classesToCheck = "",
                xhtmlNamespace = "http://www.w3.org/1999/xhtml",
                namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
                returnElements = [],
                elements,
                node;
            for(var j=0, jl=classes.length; j<jl; j+=1){
                classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
            }
            try {
                elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
            }
            catch (e) {
                elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
            }
            while ((node = elements.iterateNext())) {
                returnElements.push(node);
            }
            return returnElements;
        };
    }
    else {
        getElementsByClassName = function (className, tag, elm) {
            tag = tag || "*";
            elm = elm || document;
            var classes = className.split(" "),
                classesToCheck = [],
                elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
                current,
                returnElements = [],
                match;
            for(var k=0, kl=classes.length; k<kl; k+=1){
                classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
            }
            for(var l=0, ll=elements.length; l<ll; l+=1){
                current = elements[l];
                match = false;
                for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
                    match = classesToCheck[m].test(current.className);
                    if (!match) {
                        break;
                    }
                }
                if (match) {
                    returnElements.push(current);
                }
            }
            return returnElements;
        };
    }
    return getElementsByClassName(className, tag, elm);
};

then use like so 然后像这样使用

var radioButtons = getElementsByClassName('myClassName', 'input');
var len = radioButtons.length;

for (var i = 0; i < len; i++)
    radioButtons[i].style.display = 'none';

Everybody else has nailed it, so I'll put in a plug for the frameworks. 其他人都对它进行了钉牢,因此我将为这些框架添加一个插件。

Using jquery or mootools or another framework makes this super easy: 使用jquery或mootools或其他框架使此超级简单:

MooTools: MooTools的:

$$('input[name=myRadioName]).setStyle('display','none');

or 要么

$$('input[name=myRadioName]).fade('out');

You can try something like 您可以尝试类似

<span id="myspan"><input id="radioButton1" type="radio" />Some label goes here</span>

Then 然后

document.getElementById('myspan').style.display="none"; //inline or block to display again

If you are using JQuery then 如果您正在使用JQuery,则

$('myspan').hide(); // show() to display again

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM