首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript子类别-3层

Javascript子类别-3层
EN

Stack Overflow用户
提问于 2012-11-16 23:04:17
回答 1查看 164关注 0票数 4

我是编程新手,所以如果有更好的方法来做这件事,我会非常感谢你的建议。我已经搜索了很多小时,但我找不到列表中的第三个项目依赖于前两个项目的解决方案。

我的目标是让操作系统选项依赖于前两个选项(网络和资源)。有两个网络-内部网络和防火墙,如果需要,服务器也可以群集化。如果选择标准,则可以选择物理或虚拟。如果选择了群集,则唯一的选项是physical。

我遇到的问题是操作系统的选择。如果选择了防火墙和虚拟的组合,则只有Linux和Windows可用。如果选择防火墙和物理的组合,则允许使用AIX、Solaris、Windows和Linux。当我单击资源将其更改为physical时,我想要更改操作系统选项。

HTML代码

代码语言:javascript
复制
<div class="left_box">
    <body onload="fillCategory();">
<div id ="formWrapper">
<FORM name="drop_list" action="availability.php" method="POST" >
<fieldset>
<label>Network</label>
<SELECT class= "formSelect" NAME="build" onChange="SelectSubCat();" >       
<Option value="">Select Internal or Firewall</option>
</SELECT>
<br>
<br>
<label>Resource</label>
<SELECT class= "formSelect" id="resource" NAME="resource">
<Option value="">Resource</option>
</SELECT>
<br>
<br>
<label>OS</label>
<SELECT class= "formSelect" id="OS" NAME="OS">      
<Option value="">OS</option>
</SELECT>
<br>
<br>
</fieldset>

Javascript代码

代码语言:javascript
复制
function fillCategory(){ 
 // this function is used to fill the category list on load
addOption(document.drop_list.build, "Internal", "Internal", "");
addOption(document.drop_list.build, "Internal Cluster", "Internal Cluster", "");
addOption(document.drop_list.build, "Firewall", "Firewall", "");
addOption(document.drop_list.build, "Firewall Cluster", "Firewall Cluster", "");
}

function SelectSubCat(){
// ON selection of category this function will work
removeAllOptions(document.drop_list.resource);
removeAllOptions(document.drop_list.OS);

if((document.drop_list.build.value == 'Internal')||(document.drop_list.build.value == 'Firewall')){
addOption(document.drop_list.resource,"Virtual", "Virtual","");
addOption(document.drop_list.resource,"Physical", "Physical","");
}

if((document.drop_list.build.value == 'Internal Cluster') || (document.drop_list.build.value     == 'Firewall Cluster')) {
addOption(document.drop_list.resource,"Physical", "Physical");
}

if(document.drop_list.build.value == 'Internal') {
addOption(document.drop_list.OS,"AIX 6.1", "AIX 6.1");
addOption(document.drop_list.OS,"Linux 5.0 (64-bit)", "Linux 5.0 (64-bit)");
addOption(document.drop_list.OS,"Linux 6.0 (64-bit)", "Linux 6.0 (64-bit)");
addOption(document.drop_list.OS,"Solaris 10", "Solaris 10");
addOption(document.drop_list.OS,"Windows 2008 (64-bit) Standard", "Windows 2008 (64-bit) Standard");
addOption(document.drop_list.OS,"Windows 2008 (64-bit) Enterprise", "Windows 2008 (64-bit)   Enterprise");
addOption(document.drop_list.OS,"Windows 2008 R2 (64-bit) Standard", "Windows 2008 R2 (64-bit)  Standard");
addOption(document.drop_list.OS,"Windows 2008 R2 (64-bit) Enterprise", "Windows 2008 R2 (64-bit) Enterprise");
addOption(document.drop_list.OS,"Special", "Special");
}

if((document.drop_list.build.value == 'Internal Cluster') ||(document.drop_list.build.value == 'Firewall Cluster')){
addOption(document.drop_list.OS,"AIX 6.1", "AIX 6.1");
addOption(document.drop_list.OS,"Linux 5.0 (64-bit)", "Linux 5.0 (64-bit)");
addOption(document.drop_list.OS,"Linux 6.0 (64-bit)", "Linux 6.0 (64-bit)");
addOption(document.drop_list.OS,"Solaris 10", "Solaris 10");
addOption(document.drop_list.OS,"Windows 2008 (64-bit) Enterprise", "Windows 2008 (64-bit) Enterprise");
addOption(document.drop_list.OS,"Windows 2008 R2 (64-bit) Enterprise", "Windows 2008 R2 (64-bit) Enterprise");
}

if((document.drop_list.build.value == 'Firewall') && (document.drop_list.resource.value == 'Virtual')) {
addOption(document.drop_list.OS,"Linux 5.0 (64-bit)", "Linux 5.0 (64-bit)");
addOption(document.drop_list.OS,"Linux 6.0 (64-bit)", "Linux 6.0 (64-bit)");
addOption(document.drop_list.OS,"Windows 2008 (64-bit) Enterprise", "Windows 2008 (64-bit) Enterprise");
addOption(document.drop_list.OS,"Windows 2008 R2 (64-bit) Enterprise", "Windows 2008 R2 (64-bit) Enterprise");
}

if((document.drop_list.build.value == 'Firewall') && (document.drop_list.resource.value == 'Physical')) {
addOption(document.drop_list.OS,"AIX 6.1", "AIX 6.1");
addOption(document.drop_list.OS,"Linux 5.0 (64-bit)", "Linux 5.0 (64-bit)");
addOption(document.drop_list.OS,"Linux 6.0 (64-bit)", "Linux 6.0 (64-bit)");
addOption(document.drop_list.OS,"Solaris 10", "Solaris 10");
addOption(document.drop_list.OS,"Windows 2008 (64-bit) Enterprise", "Windows 2008 (64-bit) Enterprise");
addOption(document.drop_list.OS,"Windows 2008 R2 (64-bit) Enterprise", "Windows 2008 R2 (64-bit) Enterprise");
}

} 

////////////////// 

function removeAllOptions(selectbox)
{
    var i;
    for(i=selectbox.options.length-1;i>=0;i--)
{
    //selectbox.options.remove(i);
    selectbox.remove(i);
}
} 


function addOption(selectbox, value, text )
{
var optn = document.createElement("OPTION");
optn.text = text;
optn.value = value;

selectbox.options.add(optn);
}
EN

回答 1

Stack Overflow用户

发布于 2012-11-17 02:51:28

将创建操作系统选项的代码部分移到另一个函数中。在原始函数的末尾调用它。在资源变更时调用新函数。

像这样:

代码语言:javascript
复制
function selectResource(){
  ...
  selectOS();

}
function selectOS()...

http://jsfiddle.net/7ey8E/1/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13419175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档