4

人気ゲーム Mount & Blade の Unnoficial キャラクター作成テスターを作ろうとしています。理論的には、スクリプトは、選択したオプションに応じて、ゲームで行うようにキャラクターの統計を決定する必要があります。

選択ボックスで男性/女性を選択すると、指定したフィールドが消えません。私は何を間違えましたか?

統計が変更されたら、それらを表形式で自動的に表示したいのですが、それには各 td に id を指定する必要がありますか、または左から 2 つ下のセルから 3 番目のセルのようにどのセルを参照することができますか 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;
    }
}

ここに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>

編集: また、ヘッダーで jQuery ファイルにリンクしていることを確認しました。

  <script type="text/javascript" src="jquery.min.js"></script>

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>
4

1 に答える 1

8

http://jsfiddle.net/KvNVN/を参照してください

各要素を表示/非表示にする代わりに、それらにクラスを追加できます。

<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>

その後

$('.f').hide();
$('.m').show();

以下を使用して CSS スタイルシートを作成することもできます。.f{display:none} .m{display:block;}

あなたのコードには問題があります: もしあなたが...

<select id="selGender">
    <option value="1" >Male</option>
    <option value="2">Female</option>
</select>

... デフォルトで選択される値は「Male」であるため、選択しても onchange イベントはトリガーされません。使用できます

<select id="selGender">
    <option selected="selected" disabled="disabled">Select gender:</option>
    <option value="1" >Male</option>
    <option value="2">Female</option>
</select>

さらに、あなたは持っています

if (sGender = 1)

使用する必要があります

if (sGender == 1)

値を設定するのではなく、比較しているためです。

他の質問 (テーブルをナビゲートする) については、それを行う JavaScript 関数を作成できます。しかし、「左から2番目のセルから3番目のセル」で何をしたいのかよくわかりません。

編集:

私がよく理解していれば、あなたは次のようなテーブルを持っています

<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>

テーブル

そして、あなたがしたい

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

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

...

それで、

function table(col,row){
   return document.getElementById('table').tBodies[0].getElementsByTagName('tr')[row-1].getElementsByTagName('td')[col-1];
}

ここでそれを参照してください:http://jsfiddle.net/UGHHd/

于 2012-08-24T15:25:17.523 に答える