我正在尝试为流行的游戏Mount&Blade制作一个Unnoficial角色创建测试程序.理论上,根据所选择的选项,脚本应该像在游戏中一样确定角色统计数据.
当我在选择框中选择男性/女性时,没有指定的字段消失.我做错了什么?
当统计数据发生变化时,我希望以表格形式自动显示它们,这是否需要我给每个td一个id或者我能以某种方式引用哪个单元格,就像左边的两个单元格中的第三个单元格将是table1(3) ,2)还是太难/不可能?
这是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;
}
}
Run Code Online (Sandbox Code Playgroud)
这是HTML
<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>
Run Code Online (Sandbox Code Playgroud)
编辑:另外,我已确保我已链接到标题中的jQuery文件.
<script type="text/javascript" src="jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
EDIT2:这是mSquire和fSquire所在的部分:
<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>
Run Code Online (Sandbox Code Playgroud)
您可以向它们添加类,而不是显示/隐藏每个元素:
<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>
Run Code Online (Sandbox Code Playgroud)
然后
$('.f').hide();
$('.m').show();
Run Code Online (Sandbox Code Playgroud)
您还可以创建一个CSS样式表: .f{display:none} .m{display:block;}
你的代码有问题:如果你有......
<select id="selGender">
<option value="1" >Male</option>
<option value="2">Female</option>
</select>
Run Code Online (Sandbox Code Playgroud)
...默认选中的值为"Male",因此如果选择它,则不会触发onchange事件.您可以使用
<select id="selGender">
<option selected="selected" disabled="disabled">Select gender:</option>
<option value="1" >Male</option>
<option value="2">Female</option>
</select>
Run Code Online (Sandbox Code Playgroud)
而且,你有
if (sGender = 1)
Run Code Online (Sandbox Code Playgroud)
你应该用
if (sGender == 1)
Run Code Online (Sandbox Code Playgroud)
因为你正在比较,而不是设定值.
关于您的另一个问题(在表格中导航),您可以创建一个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>
Run Code Online (Sandbox Code Playgroud)

你想要的
table(1,1)=Skill 1 cell
table(1,2)=Value 1 cell
table(2,1)=Skill 2 cell
table(2,2)=Value 2 cell
...
Run Code Online (Sandbox Code Playgroud)
然后,
function table(col,row){
return document.getElementById('table').tBodies[0].getElementsByTagName('tr')[row-1].getElementsByTagName('td')[col-1];
}
Run Code Online (Sandbox Code Playgroud)
在这里看到:http://jsfiddle.net/UGHHd/