我是 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 循环不会给我同样的错误(这种语言很有趣)。
几天来,我一直在为这个问题挠头。我敢肯定有一种相当简单的方法可以完成这项工作,但对于我的生活,我无法弄清楚。
谢谢你。