Javascript 使用getElementsByTagName修改表单
我是Javascript新手,在一个项目上遇到了麻烦 我有一个表单,我只想在每个字段集中显示第一个select元素($initial),直到用户在$initial中选择了一个选项。之后,将显示其他选择。如果用户选择$initial中的第一个选项,其他选项将再次隐藏 以下是我目前掌握的代码:Javascript 使用getElementsByTagName修改表单,javascript,arrays,for-loop,getelementsbytagname,for-in-loop,Javascript,Arrays,For Loop,Getelementsbytagname,For In Loop,我是Javascript新手,在一个项目上遇到了麻烦 我有一个表单,我只想在每个字段集中显示第一个select元素($initial),直到用户在$initial中选择了一个选项。之后,将显示其他选择。如果用户选择$initial中的第一个选项,其他选项将再次隐藏 以下是我目前掌握的代码: var $ = function(id) { return document.getElementById(id); } var setOpen = function(id) { $(id).
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);
}
};
}
}
var$=函数(id){
返回文档.getElementById(id);
}
var setOpen=函数(id){
$(id).setAttribute(“类”,“打开”);
};
var setClosed=函数(id){
$(id).removeAttribute(“类”);
};
变量集=document.getElementsByTagName(“字段集”);
对于(var i=0;i
我最初使用for in循环,但它们给了我不可靠的结果(比如“object2没有方法‘getAttribute’”)。出于某种原因,使用For循环不会给我同样的错误(这种语言很有趣)
这件事我已经琢磨了好几天了。我相信有一个相当简单的方法来完成这件事,但就我个人而言,我想不出来
谢谢。你看过淘汰赛()吗?它的设计目的是帮助用户界面合成,这与您试图实现的目标非常相似。@jaq316谢谢您的链接。我没听说过它,尽管它看起来确实很有用。有趣的更新:我丢失了一个分号(谢谢,JSHint),现在它将在更改时显示其他选择。但它只显示第一个和最后一个选择。在这里。我刚刚意识到一个巨大的问题:即使这是工作,这一切都会发生,即使这不是我想要的。哦,好吧,我想我得做得更具体些。