Преобразовать строку в переменную в JavaScript - PullRequest
2 голосов
/ 13 июня 2010

Есть ли способ преобразовать строку в переменную в Javascript?Сейчас у меня есть скрипт, который обновляет данные на основе значений поля выбора:

<script type="text/javascript">
var a = new Array();
a[0] = 'Name';
a[1] = 'Description';

var b = new Array();
b[0] = 'Name 2';
b[1] = 'Description 2';

function changeSystem(){
    var selectedAccount=document.getElementById('selected_option').value;

    document.getElementById('name').innerHTML = selectedAccount[0];
    document.getElementById('description').innerHTML = selectedAccount[1];
}
</script>
<form method="POST">
    <select onchange="changeSystem()" id="selected_option">
     <option>A</option>
     <option>B</option>
    </select>
</form>
<span id="name"></span><br>
<span id="description"></span><br>

selectedAccount - строка выбранного элемента в <select>.Однако для доступа к массиву он должен быть переменной, т. Е. a[0] вместо 'a'[0].Какие есть решения для этого?

Ответы [ 2 ]

4 голосов
/ 13 июня 2010
var dict = {
    'A': ['Name', 'Description'],
    'B': ['Name 2', 'Description']
};

dict['A'][0]

Таким образом, динамический доступ к нему с помощью

dict[selectedAccount][0]

Вы можете использовать литерал объекта вместо массива:

var dict = {
    'A': {'name': 'john'}
};

dict['A']['name']
3 голосов
/ 13 июня 2010

Я бы использовал что-то вроде этого:

<script type="text/javascript">
var stuff = { 
    A: { name: 'Name', desc: 'Description'},
    B: { name: 'Name 2', desc: 'Description 2'}
};

function $(aId) {
    return document.getElementById(aId);
}

function changeSystem(){
    var selectedAccount = $('selected_option').value;

    if (selectedAccount in stuff) {
        $('name').innerHTML = stuff[selectedAccount].name;
        $('description').innerHTML = stuff[selectedAccount].desc;
    } else {
        $('name').innerHTML = '';
        $('description').innerHTML = '';
    } 
}
</script>
<form method="POST">
    <select onchange="changeSystem()" id="selected_option">
        <option>A</option>
        <option>B</option>
        <option>C</option>
    </select>
</form>
<span id="name"></span><br>
<span id="description"></span><br>

Проверено на: Google Chrome 6.0.427.0 dev

...