2015-05-28 5 views
0

enter image description hereдоступ к глобальным переменным после установки их Javascript

Я пытаюсь отслеживать изменения в поле выбора в Джанго. Мой код ниже работает до alert(change.new_time);, так что я делаю объект correctly-

 var changed_select_box_array = []; 


     function handleChanges(id){ 
      var x = document.getElementById(id).selectedIndex; 
      var time = document.getElementsByTagName("option")[x].value; 
      var change = {id:id, new_time:time}; 
      alert(change.id); 
      alert(change.new_time); 
      changed_select_box_array[changed_select_box_array.length] = change; 
      alert(changed_select_box_array[0].id); 
     } 

, но я не могу получить доступ к новому элементу в массиве. Я пробовал 4-5 разных способов и следил за некоторыми правилами глобальных переменных в funcs, которые я нашел на этом сайте, и я не могу получить доступ к чему-либо из нового массива. Я что-то делаю неправильно в массиве? Я тоже попытался нажать. Спасибо

+0

Почему вы пишете в 'changed_select_box_array [changed_select_box_array.length]', но чтение совершенно другой элемент 'changed_select_box_array [0]'? – user2357112

+0

Я попытался написать, используя push, но все равно не смог получить к нему доступ. мне кажется, что моя проблема заключается в доступе к нему – codyc4321

+0

, он работает для меня. Каков ваш результат за 2 первых предупреждения? –

ответ

1

Вы можете использовать Object как ассоциативный массив.

var changed_select_box_array = {}; 
 

 
function handleChanges() { 
 
    var x = this.selectedIndex; 
 
    var id = this.id; 
 
    var time = this.getElementsByTagName("option")[x].value; 
 
    var change = { id: id, new_time: time }; 
 
    changed_select_box_array[id] = change; 
 
    console.log(changed_select_box_array); 
 
}
<!--Emitation of some select inputs with change events--> 
 
<select id="s1" onchange="handleChanges.call(this)"> 
 
    <option value="val1">Value 1</option> 
 
    <option value="val2">Value 2</option> 
 
    <option value="val3">Value 3</option> 
 
</select> 
 

 
<select id="s2" onchange="handleChanges.call(this)"> 
 
    <option value="val4">Value 1</option> 
 
    <option value="val5">Value 2</option> 
 
    <option value="val6">Value 3</option> 
 
</select>

Смежные вопросы