2012-09-18 119 views
0

是否可以將選項選項的值設置爲預定義變量,然後使用其方法?下面是一個例子:將選項值設置爲變量

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

理想情況下,選擇標題凱爾特人的選項,我可以使用一個方法來訪問可變對象波士頓凱爾特人的不同特性。這可能嗎?

+0

那些看起來不像有效的DOM選擇器 - 哪個庫是你的'$'? – Bergi

+0

你使用jQuery嗎? – Pete

+1

@Pete:看起來像prototype.js,但OP應該標記問題 – Bergi

回答

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 

事情變得棘手,因爲你定義bostonCelticsvar,這意味着它並不一定是任何對象的屬性。您仍然可以完成你想要的與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/

我希望這獲取到什麼你問的心臟。

+0

謝謝,這非常有幫助。我使用的方法是使用'eval($('teamChoice')。options [$('teamChoice')。selectedIndex] .value).conferencePA;'完成它。非常感謝。 –

+0

沒問題,詹姆斯。如果它有幫助,你可以通過接受我的回答來展示一些愛,或者給我一個+1! –

+0

不能+1,但答案接受! –