2012-06-18 6 views
1

У меня возникает ошибка javascript при попытке ссылаться на объект в ContentPlaceHolder, который находится за пределами текущего ContentPlaceHolder (они оба находятся на одной и той же дочерней странице).Ошибка JavaScript при ссылке на Master-pages ContentPlaceHolder

Ошибка: Microsoft JScript ошибка времени выполнения: Не удается установить значение «значение» объекта: объект является нулевым или не определено

Строка сценария, где происходит ошибка:

<input type="submit" name="Master$cphMainContent$btnUnregister" value="Proceed" onclick="document.getElementById('Master_cphHeadContent_TimeAlert').value = GetSeconds(); return ValidateProvider(1);" id="cphMainContent_btnUnregister" class="netButton" /> 

TimeAlert - скрытый объект в cphHeadContent ContentPlaceHodler.

Обычно я знаю, что объект (TimeAlert) не отображается, когда он вызывается. Однако на этот раз это одна и та же страница, поэтому я не могу понять, почему объект имеет значение null или undefined.

Любые предложения по устранению этой ошибки?

+0

Вы уверены, что элемент управления, на который вы ссылаетесь, имеет * id * точно так же, как вы указали его? При использовании java-скрипта попробуйте ссылаться на элементы управления с их свойством * ClientID *, а не на hardcoding в скрипте. Дополнительную информацию можно найти здесь http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientid.aspx. Для этого вы можете использовать ** <% = ** и **%> **, как описано здесь: http://stackoverflow.com/questions/7889035/inline-code-in-markup-page-in -Asp-нетто-WebForms. –

+0

Это уже существовавший код, который должен работать (за исключением того, что он не работает, когда я его запускаю) – DotNetRookie

+0

Я предполагаю, что * id *, доступный в java-скрипте, может зависеть от того, где элемент управления находится в структуре страницы. Если * id * элемента управления жестко закодирован, и что-то изменилось в структуре страницы, код может перестать работать, потому что у элемента управления появился еще один * id *. В исходном окне браузера и проверьте, есть ли контроль с этим * id *. Если его там нет, вы можете обновить * id * до допустимого значения, но использование ** Control.ClientID ** вместо этого, вероятно, будет лучшим решением. –

ответ

1

Как вы устанавливаете идентификатор компонента на обработчике событий?

Посмотрите на EventHandler:

document.getElementById(&#39;Master_cphHeadContent_TimeAlert&#39;).value = GetSeconds(); return ValidateProvider(1); 

Примечание & # 39 является HTML закодирован символ, здесь proprably ваша проблема. Попробуйте это:

document.getElementById('Master_cphHeadContent_TimeAlert').value = GetSeconds(); return ValidateProvider(1); 
+0

На самом деле это была опечатка с моей стороны. Я справился и вставил код из режима отладки (когда я получаю сообщение об ошибке javascript msgbox). Фактический код - с апострофом, а не с кодировкой HTML. – DotNetRookie

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