Добрый день!
Прошу помощи, поскольку сам ума не приложу из-за чего один и тот же код работает нестабильно.
Описываю ситуацию:
Делаю страничку для хэлпа. При нажатии на ссылку должен появляться слой в виде хинта (подсказки) с описанием ссылки-параметра.
Вот код слоя:
<div id="HintObject" class="HintStyle" style="display:none; position:absolute; left:275px; top:168px; z-index:1"></div>
Вот код ссылки:
TCntDbTableHandle <a id="idTableHandle" href="javascript:ShowHint('idTableHandle', 'hTableHandle')">TableHandle</a>
Вот код функции ShowHint:
function ShowHint(Parameter_ID, HintString_ID)
{
// Define HintObject position
ParamObject = document.all[Parameter_ID];
S_OffsetLeft = 0;
S_OffsetTop = 0;
Obj = ParamObject;
while (Obj != null)
{
S_OffsetLeft += Obj.offsetLeft;
S_OffsetTop += Obj.offsetTop;
Obj = Obj.offsetParent;
}
document.all.HintObject.style.left = ParamObject.offsetWidth + S_OffsetLeft + 10;
document.all.HintObject.style.top = S_OffsetTop;
// Define HintObject content
DT_Object = document.all[HintString_ID + 'DT'];
DD_Object = document.all[HintString_ID + 'DD'];
document.all.HintObject.innerHTML = '<DL>' + DT_Object.outerHTML + DD_Object.outerHTML + '</DL>';
// Make HintObject visible
document.all.HintObject.style.display="";
}
Еще инфа: данные для этого слоя берутся из HTML-странички:
<dl>
<dt id="hTableHandleDT"><em>TableHandle</em></dt>
<dd id="hTableHandleDD">
[in] Table handle, returned by <a href="#CntDb_CreateTable">CntDb_CreateTable</a>
or <a href="#CntDb_OpenTable">CntDb_OpenTable</a> functions.
</dd>
<dt id="hColumnDT"><em>Column</em></dt>
<dd id="hColumnDD">
[in] Pointer to a structure containing all column data to be added into the table.
</dd>
</dl>
Проблема: первый раз все работает отлично. Зато вот если нажать на эту ссылку второй раз, то появляется окошко-подсказка с надписью "undefined undefined". Вот не могу понять почему... и как сделать, чтобы работало?
Очень прошу помощи.
Спасибо, буду очень ждать.
Евгений.
Здравствуйте, UJey, Вы писали:
В общем то вся проблема из-за того, что у тебя после клика появляются еще элементы с id = hTableHandleDT и hTableHandleDD
при следующем обращении их уже 2
самы простой и быстрый способ выделен ниже жирным
UJ>Добрый день!
UJ>Прошу помощи, поскольку сам ума не приложу из-за чего один и тот же код работает нестабильно.
UJ>Описываю ситуацию:
UJ>Делаю страничку для хэлпа. При нажатии на ссылку должен появляться слой в виде хинта (подсказки) с описанием ссылки-параметра.
UJ>Вот код слоя:
UJ>UJ><div id="HintObject" class="HintStyle" style="display:none; position:absolute; left:275px; top:168px; z-index:1"></div>
UJ>
UJ>Вот код ссылки:
UJ>UJ>TCntDbTableHandle <a id="idTableHandle" href="javascript:ShowHint('idTableHandle', 'hTableHandle')">TableHandle</a>
UJ>
UJ>Вот код функции ShowHint:
UJ>UJ>function ShowHint(Parameter_ID, HintString_ID)
UJ>{
UJ> // Define HintObject position
UJ> ParamObject = document.all[Parameter_ID];
UJ> S_OffsetLeft = 0;
UJ> S_OffsetTop = 0;
UJ> Obj = ParamObject;
UJ> while (Obj != null)
UJ> {
UJ> S_OffsetLeft += Obj.offsetLeft;
UJ> S_OffsetTop += Obj.offsetTop;
UJ> Obj = Obj.offsetParent;
UJ> }
UJ> document.all.HintObject.style.left = ParamObject.offsetWidth + S_OffsetLeft + 10;
UJ> document.all.HintObject.style.top = S_OffsetTop;
document.all.HintObject.innerHTML = '';
UJ> // Define HintObject content
UJ> DT_Object = document.all[HintString_ID + 'DT'];
UJ> DD_Object = document.all[HintString_ID + 'DD'];
UJ> document.all.HintObject.innerHTML = '<DL>' + DT_Object.outerHTML + DD_Object.outerHTML + '</DL>';
UJ> // Make HintObject visible
UJ> document.all.HintObject.style.display="";
UJ>}
UJ>
UJ>Еще инфа: данные для этого слоя берутся из HTML-странички:
UJ><dl>
UJ> <dt id="hTableHandleDT"><em>TableHandle</em></dt>
UJ> <dd id="hTableHandleDD">
UJ> [in] Table handle, returned by <a href="#CntDb_CreateTable">CntDb_CreateTable</a>
UJ> or <a href="#CntDb_OpenTable">CntDb_OpenTable</a> functions.
</dd>
UJ> <dt id="hColumnDT"><em>Column</em></dt>
UJ> <dd id="hColumnDD">
UJ> [in] Pointer to a structure containing all column data to be added into the table.
</dd>
</dl>
UJ>
UJ>Проблема: первый раз все работает отлично. Зато вот если нажать на эту ссылку второй раз, то появляется окошко-подсказка с надписью "undefined undefined". Вот не могу понять почему... и как сделать, чтобы работало?
UJ>Очень прошу помощи.
UJ>Спасибо, буду очень ждать.
UJ>Евгений.... << RSDN@Home 1.0 beta 7a >>
Здравствуйте, andik, Вы писали:
A>В общем то вся проблема из-за того, что у тебя после клика появляются еще элементы с id = hTableHandleDT и hTableHandleDD
A>при следующем обращении их уже 2
A>самы простой и быстрый способ выделен ниже жирным
A> document.all.HintObject.innerHTML = '';
Слушай, вах, спасибо, дорогой! Век не забуду!
Ставлю тебе за это оценку! — Очень помог и вовремя!
Еще раз спасибо.