@47911

Что такое в javascript «window.XXX»?

Выдаётся в консоли ошибка:
Uncaught TypeError: Cannot read property 'focus' of undefined at HTMLDivElement.onclick

При нажатии на поле. Эта ошибка ссылается на строку № 1(приведённый код)

<dd class="hikamarket_product_category"><div class="nameboxes" id="data_product_categories" onclick="window.oNameboxes['data_product_categories'].focus('data_product_categories_text');">
<div class="namebox" id="data_product_categories-2"><input type="hidden" name="data[product][categories][]" value="2"/>product category <a class="closebutton" href="#" onclick="window.oNameboxes['data_product_categories'].unset(this,'2');window.oNamebox.cancelEvent();return false;"><span>X</span></a></div>
<div class="namebox" style="display:none;" id="data_product_categoriestpl"><input type="hidden" name="{map}" value="{key}"/>{name} <a class="closebutton" href="#" onclick="window.oNameboxes['data_product_categories'].unset(this,'{key}');window.oNamebox.cancelEvent();return false;"><span>X</span></a></div>
<div class="nametext"><input id="data_product_categories_text" type="text" style="width:50px;min-width:60px" onfocus="window.oNameboxes['data_product_categories'].focus(this);" onkeyup="window.oNameboxes['data_product_categories'].search(this);" onchange="window.oNameboxes['data_product_categories'].search(this);"/><span style="position:absolute;top:0px;left:-2000px;visibility:hidden" id="data_product_categories_span">span</span></div>
	<div id="data_product_categorieshikaclear" style="clear:both;float:none;"></div></div>
<div class="namebox-popup">
	<div style="display:none;" data-oresize="data_product_categories" class="namebox-popup-resize namebox-popup-container">
		<div id="data_product_categories_otree" class="oTree namebox-popup-content"></div>
	</div>
</div></dd>

Собственно я в самом javascript не очень. Как мне понять: что именно не так (я ошибку то перевёл)? Предполагаю, что мне поможет понимание (в поисковике смотрел, не понял) того, что такое "window.oNameboxes['data_product_categories'].focus('data_product_categories_text');"

Я понимаю: "focus" - функция, в которую передают строку "data_product_categories_text". Ок. А что такое "window.oNameboxes['data_product_categories']" можете прояснить?(расшифровать эту запись. Думаю дальше я смогу сам найти проблему).
  • Вопрос задан
  • 165 просмотров
Пригласить эксперта
Ответы на вопрос 2
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
oNameboxes - это массив в глобальном скоупе.
oNameboxes['data_product_categories'] - элемент этого массива
.focus('data_product_categories_text') - метод (функция)
Предполагается, что у элемента массива присутствует этот метод, но по факту такого ключа в массиве нет, потому выражение oNameboxes['data_product_categories'] равно undefined
Ответ написан
Stalker_RED
@Stalker_RED
windows, это окно.
В вашем случае, это видимо окно браузера.
Также этот объект выступает в роли глобальной областью видимости.

oNameboxes - какая-то переменная объявленная на вашей странице.
Можете сделать console.log(oNameboxes) и посмотреть что там в ней содержится. Вероятно в ней есть и data_product_categories.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы