0

Select Option の値を定義済みの変数と等しく設定し、そのメソッドを使用することは可能ですか? 次に例を示します。

<select class='hidden' id='teamChoice' onchange='chooseTeam()'>
<option value="" selected>What team</option>
    <option value='bostonCeltics'>Boston Celtics</option>
</select>


var bostonCeltics = {
    conferencePA: "5=Conference=Eastern",
    divisionPA: "5=Division=Atlantic"
}

function chooseTeam() {
    switch ($('teamChoice').selectedIndex) {
        case 0:
            break;
        case 1:
            $('PAType=Name=Value3').innerHTML = this.conferencePA;
            break;
    }
}

理想的には、Boston Celtics というタイトルのオプションを選択するときに、メソッドを使用して変数オブジェクト bostonCeltics のさまざまなプロパティにアクセスできます。これは可能ですか?

4

1 に答える 1

1

私は Mootools のユーザーではありませんが、あなたが何をしようとしているのかを理解していると思いますし、あなたを正しい方向に導くことができると信じています.

Javascript では、任意のオブジェクト プロパティ ディレクトリにアクセスできます。または、配列表記を使用することもできます。言い換えると、 が与えられたfoo = { bar: 1, baz: 2 }場合、以下は同等です。

console.log( foo.bar );      // prints 1
console.log( foo["bar"] );   // prints 1
var s = "bar";
console.log( foo[s] );       // prints 1

bostonCelticsとして定義するため、物事はより複雑になりますvar。つまり、必ずしもオブジェクトのプロパティであるとは限りません。evalの使用evalは推奨されていませんが、 で目的を達成することはできます。

var s = "bostonCeltics";
console.log( eval( s + ".conferencePA" ) );    // prints "5=Conference=Eastern"

個人的にはbostonCeltics、親オブジェクトに移動し、配列表記を使用してそのプロパティにアクセスすると、やりたいことは非常に簡単になります。ウィット:

var teams = {
    bostonCeltics = {
        conferencePA: "5=Conference=Eastern",
        divisionPA: "5=Division=Atlantic"
    }       
    // more teams go here
}

function chooseTeam() {
    var tc = $('teamChoice');
    var val = tc[tc.selectedIndex].value;
    console.log( teams[val].conferencePA );    // prints "5=Conference=Eastern"
}

これが実際の jsFiddle です: http://jsfiddle.net/sQvBZ/

これがあなたが求めていることの核心に届くことを願っています。

于 2012-09-18T19:47:10.133 に答える