Не работает простой код

KolyaA

Guest
Не работает простой код

Помогите пожалуйста разобраться. В теле документа есть код, который нормально работает

PHP:
<BODY>
......
<DIV ID='Alink' STYLE = 'position:absolute'>
<SCRIPT TYPE='text/javascript'>
alert(document.getElementById('Alink').style.position);
</SCRIPT>
</DIV>
.....
</BODY>
если же я пытаюсь выполнить его в виде функции
PHP:
<HEAD>
<SCRIPT TYPE="text/javascript">
function drawA()
{
document.write("<DIV ID='Alink' STYLE = 'position:absolute'>");
alert(document.getElementById('Alink').style.position);
document.write("</DIV>");
}

</SCRIPT>
</HEAD>
<BODY>
........
.....onClick="drawA()"
........
</BODY>
То выдается ошибка
Expression evaluated to null or undefined and is not convertible to Object: document.getElementById("Alink")
то есть, насколько я понял, раздела с ID='Alink' не существует .

В чем может быть причина и как это исправить?
 

Дед Анвирыч

Новичок
document.write("<DIV ID='Alink' STYLE = 'position:absolute'>");
alert(document.getElementById('Alink').style.position);
document.write("</DIV>");

Причина в том, что на момент обращения к элементу у тебя его просто нет. Так сработает:

document.write("<DIV ID='Alink' STYLE = 'position:absolute'>");
document.write("</DIV>");
alert(document.getElementById('Alink').style.position);
 

KolyaA

Guest
Но почему тогда работает в первом случае.
И ваше решение не работает, если мне надо сделать, например, следующее:
document.getElementById('Alink').style.left=800;
Это надо делать в теле <DIV></DIV> (насколько я понимаю)
 

KolyaA

Guest
1.Я еще не очень понимаю, но почему в первом случае елемент есть, а во втором его нет.
2.Я хочу нарисовать блок 'Alink' на определенном месте страницы, координаты которого получаются из JS кода, то есть на самом деле мне надо следующее
PHP:
function drawA()
{
document.write("<DIV ID='Alink' STYLE = 'position:absolute'>");
document.getElementById('Alink').style.top=document.getElementById('RadioBlock').offsetTop;
document.getElementById('ATNFlink').style.left=800;
document.write("</DIV>");
}
Задвать же координаты раздела после того как он нарисован бессмысленно. Я пробовал.

Может, вообще, это можно сделать как-то по-другому?
 

Дед Анвирыч

Новичок
емае. В первом случае alink есть, потому как написан ручками в странице. Во втором ты создаешь его в процессе работы.

Что тебе мешает переместить слой который уже есть?
 

KolyaA

Guest
Блин, я че-то вообще не понимаю. Написал:
PHP:
function drawATNF()
{
document.write("<DIV ID='Alink' STYLE = 'position:absolute;top:0;left:800'>");
document.write("</DIV>");
document.getElementById('ATNFlink').moveBy(0,document.getElementById('RadioBlock').offsetTop);
}
а он все равно:
Expression evaluated to null or undefined and is not convertible to Object: document.getElementById("Alink")

-~{}~ 21.07.04 16:16:

Все разобрался, все заработало. В теле создаю <DIV>. А по onClick перемещаю его куда надо.
 
Сверху