首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当选择另一个选项时,如何显示/隐藏选择中的选项

当选择另一个选项时,如何显示/隐藏选择中的选项
EN

Stack Overflow用户
提问于 2012-08-24 22:56:31
回答 1查看 11.2K关注 0票数 4

我正在尝试为流行的游戏Mount & Blade制作一个无名角色创建测试器。根据所选择的选项,脚本在理论上应该像在游戏中一样确定角色的统计信息。

当我在选择框中选择男性/女性时,任何指定的字段都不会消失。我做错了什么?

当统计数据改变时,我想以表格的形式自动显示它们,这是否需要我为每个td提供一个id,或者我是否可以以某种方式引用哪个单元格,例如左数下两个单元格中的第三个单元格将是table1(3,2),或者这是否太难/不可能?

这是Javascript:

代码语言:javascript
复制
//Base Stats - 
var sGender; // Male or Female
var iAgi = 6;
var iStr = 5;
var iInt = 5;
var iCha = 5;


$("#selGender").change(function() {
var mnf = $(this).val();
sGender = parseInt(mnf);
if (sGender = 1){
    //Show/hide options
    $('#fnomad').hide();
    $('#fnoble').hide();
    $('#fsquire').hide();
    $('#mnomad').show();
    $('#mnoble').show();
    $('#msquire').show();
iAgi++;
iInt++;
this.disabled=true;
} else{
    $('#mnomad').hide();
    $('#mnoble').hide();
    $('#msquire').hide();
    $('#fnomad').show();
    $('#fnoble').show();
    $('#fsquire').show();
iStr++;
iCha++;
    this.disabled=true;
    }
}

这是HTML

代码语言:javascript
复制
 <legend>Choose your background:</legend>
     <label>Gender</label>
     <select id="selGender"> 
      <option value="1" >Male</option>
      <option value="2">Female</option>
     </select>
     <label>Your father was ...</label>
     <select id="selFather">
     <option id="fnoble" value="fnoble">a Noble</option>
     <option id="mnoble" value="mnoble">a Noble</option>
     <option value="merchant">a Merchant</option>
     <option value="vetwarrior">a Veteran Warrior</option>
     <option value="thief">a Thief</option>
     <option id="fnomad" value="fnomad">a Nomad</option>
     <option id="mnomad" value="mnomad">a Nomad</option>
     </select>

编辑:此外,我还确保在标题中链接到了jQuery文件。

代码语言:javascript
复制
  <script type="text/javascript" src="jquery.min.js"></script>

EDIT2:这是mSquire和fSquire所在的部分:

代码语言:javascript
复制
 <label>When you grew to a young adult, you became a ...</label>
     <select id="selAdult">
     <option id="msquire" value="msquire">a Squire</option>
     <option id="fsquire" value="fsquire">a Lady in waiting</option>
     <option value="troubadour">Troubadour</option>
     <option value="student">Student</option>
     <option value="peddle">Peddler</option>
     <option value="poacher">Poacher</option>
     </select>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-24 23:25:18

请参阅http://jsfiddle.net/KvNVN/

您可以向元素添加类,而不是显示/隐藏每个元素:

代码语言:javascript
复制
<select id="selFather">
    <option id="fnoble" value="fnoble" class="f">a Noble (f)</option>
    <option id="mnoble" value="mnoble" class="m">a Noble (m)</option>
    <option value="merchant">a Merchant</option>
    <option value="vetwarrior">a Veteran Warrior</option>
    <option value="thief">a Thief</option>
    <option id="fnomad" value="fnomad" class="f">a Nomad (f)</option>
    <option id="mnomad" value="mnomad" class="m">a Nomad (m)</option>
</select>

然后

代码语言:javascript
复制
$('.f').hide();
$('.m').show();

还可以使用:.f{display:none} .m{display:block;}创建一个CSS样式表。

你的代码有一个问题:如果你有...

代码语言:javascript
复制
<select id="selGender">
    <option value="1" >Male</option>
    <option value="2">Female</option>
</select>

..。默认选择的值是"Male",所以如果你选择它,它不会触发onchange事件。您可以使用

代码语言:javascript
复制
<select id="selGender">
    <option selected="selected" disabled="disabled">Select gender:</option>
    <option value="1" >Male</option>
    <option value="2">Female</option>
</select>

此外,您还拥有

代码语言:javascript
复制
if (sGender = 1)

你应该使用

代码语言:javascript
复制
if (sGender == 1)

因为您是在比较,而不是设置值。

关于您的另一个问题(在表中导航),您可以创建一个JavaScript函数来执行此操作。但是我不太明白你想要“左数第三个单元格,下两个单元格”。

编辑:

如果我没记错的话,你们有这样一张桌子

代码语言:javascript
复制
<table id="table">
 <tbody>
   <tr>
     <td>Skill 1</td>
     <td>Skill 2</td>
     <td>Skill 3</td>
   </tr>
   <tr>
     <td>Value 1</td>
     <td>Value 2</td>
     <td>Value 3</td>
   </tr>
 </tbody>
</table>

你想要

代码语言:javascript
复制
table(1,1)=Skill 1 cell
table(1,2)=Value 1 cell

table(2,1)=Skill 2 cell
table(2,2)=Value 2 cell

...

然后,

代码语言:javascript
复制
function table(col,row){
   return document.getElementById('table').tBodies[0].getElementsByTagName('tr')[row-1].getElementsByTagName('td')[col-1];
}

点击这里查看:http://jsfiddle.net/UGHHd/

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

https://stackoverflow.com/questions/12111830

复制
相关文章

相似问题

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