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为 a 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 回答