0

我是 Javascript 新手,我在一个项目上碰壁了。

我有一个表单,我只想在每个字段集中显示第一个选择元素($initial),直到用户在 $initial 中选择了一个选项。之后,其他选择应该出现。如果用户在 $initial 中选择了第一个选项,其他选择将再次隐藏自己。

这是我到目前为止的代码:

var $ = function(id) {
    return document.getElementById(id);
}
var setOpen = function(id) {
    $(id).setAttribute("class", "open");
};
var setClosed = function(id) {
    $(id).removeAttribute("class");
};

var sets = document.getElementsByTagName("fieldset");

for(var i = 0; i < sets.length - 1; i++) { //fieldset at the end with no selects is skipped
    var setNode = sets[i].getAttribute("id");
    var selects = $(setNode).getElementsByTagName("select");
    var initial = selects[0].id;
    for (var x = 0; x < selects.length; x++) {
        var selectNode = selects[x].getAttribute("id");
        $(initial).onchange = function() {
            if ($(initial).value != "none") {
                setOpen(selectNode);
            } else {
                setClosed(selectNode);
                setOpen(initial);
            }
        };  
    }
}

我最初使用 for-in 循环,但它们给了我不稳定的结果(诸如“对象 2 没有方法 'getAttribute'”之类的东西)。出于某种原因,使用 for 循环不会给我同样的错误(这种语言很有趣)。

几天来,我一直在为这个问题挠头。我敢肯定有一种相当简单的方法可以完成这项工作,但对于我的生活,我无法弄清楚。

谢谢你。

4

0 回答 0