Добрый день,Поведение оператора странного выключателя
Я действительно изо всех сил стараюсь дать должный заголовок (описывающий проблему), поэтому, пожалуйста, простите меня.
Проблема:
У меня есть класс с двумя способами:
1 import FormPopulator = require("../util/FormPopulator");
2
3 class UIX {
4
5 formPopulator: FormPopulator;
6
7 contructor() {
8 this.formPopulator = new FormPopulator();
9 }
10
11 public setDefaultValues(defaultValues: DefaultValues) {
12 for (var i = 0; i < SearchAllFormProperties.searchFormProperties.length; i++) {
13 this.pushDataToUI(SearchAllFormProperties.searchFormProperties[i], defaultValues);
14 }
15 alert("End Of the loop.");
16 }
17
18 public pushDataToUI(property: string, defaultValues: DefaultValues) {
19 switch (property) {
20 case "textField":
21 (<HTMLInputElement> document.getElementById("textField")).value = "";
22 break;
23 case "dropDown":
24 this.formPopulator.populateTheDropBox("dropDown", defaultValues.listOfValues);
25 alert("after populateTheDropBox");
26 break;
27 default:
28 alert("Property: " + property + " is not accepted.");
29 }
30 }
31 }
Теперь - setDefaultValues
называется, но исполнение не попадает в линию 15
класса UIX, если я не прокомментирую строку 24
того же класса, то есть звонит, однако он получает строку 25
значение он вернулся из метода , но почему он не возвращается к setDefaultValues
?
1 class FormPopulator {
2 public populateTheDropBox(selectElementID: string, listOfElements: Array<any>) {
3
4 // Get the combo box
5 var selectElement = <HTMLSelectElement> document.getElementById(comboBoxID);
6 // Reset the options
7 selectElement.options.length = 0;
8
9 for (var i = 0; i < listOfElements.length; i++) {
10
11 var option = document.createElement("option");
12 option.value = ""+listOfElements[i].id;
13 option.innerHTML = listOfElements[i].value;
14
15 selectElement.appendChild(option);
16 }
17 }
18 }
P.S. Если я закомментируйте петлю, начиная с линии 9
из класса FormPopulator - это вернуться к setDefaultValues
и выполняет линию 15
класса UIx т.е. alert("End Of the loop.");
Я действительно изо всех сил, чтобы объяснить это поведение, и нет никаких исключений ,
Это звучит как необработанное исключение. Если вы используете Chrome для отладки - убедитесь, что у вас есть «Пауза на выведенных исключениях», установленная в true. На всякий случай вы уже можете обрабатывать его где-то сверху в стеке вызовов. – Amid
Единственное логическое объяснение, которое я могу найти, заключается в том, что как-то 'populateTheDropBox' увеличивает' SearchAllFormProperties.searchFormProperties.length' и заставляет цикл работать вечно ... –
Aviad - Нет, я напечатал значение индекса - это правильно, и концы петли. – Sasha