Из вашей картинки видно, что объект books
пуст, когда возникает эта ошибка. Вероятно, это реальная проблема, которую вам нужно решить. Вы не предоставили никакого кода, который устанавливает значение books
, поэтому мы не сможем сказать, почему это происходит.
Сначала вы захватываете books[document.assess_form.curr_versionid.value]
, а затем пытаетесь захватить свойство document.assess_form.curr_dralevel.value
того, что возвращается.
Он вернет undefined
, потому что books
не имеет никакого свойства, не говоря уже о document.assess_form.curr_versionid.value
.
оскорбительная строка кода, как вы указали:
book_ary = books[document.assess_form.curr_versionid.value][document.assess_form.curr_dralevel.value].split('^');
Воспроизводимые
var books = { "Book1": "Book1Data", "Book2": "Book2Data" };
// this line will generate an error because the output of books[1] is undefined
// thus, you can't call the [2] property on it
var book_ary = books[1][2]; // Cannot read property '2' of undefined
Это происходит потому, что вы не можете получить доступ к свойству чего-то, что undefined
, таким образом, в JavaScript
. Вывод books[1]
равен undefined
, поэтому вызов books[1][2]
приведет к ошибке.